зависания на read

Igor Sysoev is at rambler-co.ru
Thu Sep 28 14:49:02 MSD 2006


On Thu, 28 Sep 2006, Dmitriy MiksIr wrote:

> Ситауция такая - был переезд с linux-2.4.27 на linux-2.4.33.3, когда проблема 
> была замечена. Стоял nginx-0.3.29. Переезд на nginx-0.4.2 не помог. Смена 
> ядра на linux-2.4.32 так же облегчения не приносит.
> Все ядра с патчем grsecurity. Пробовать отъехать на 2.4.27 пока не пробовал - 
> по своим "личным" причинам пока этого нельзя.
>
> Как менялись конфиги ядра сказать сложно - от 2.4.27 конфига не осталось. 
> Особо больше изменений с сервеом не было, кроме, разве что, включения чтения 
> температуры через lm_sensors.
>
> Пробовал запускать nginx c use select - вроде сначала проблема исчезала, а 
> через какое-то время начинало валится "select ready != events".

Да, у select'а есть такая проблема. Надо будет заняться.

> Есть другая машина с linux-2.4.32 и nginx 0.3.20 - там таких проблем нет, но 
> там и нагрузка гораздо меньше, ибо проблема появляется только при каком-то 
> определенном пороге нагрузки.
>
> Дисковая система и правда нагружена весьма... но, как я писал, странно что 
> проблема возникает в tcp. Т.е. выглядит по strace апача это так:
> accept(118,{sa_family=AF_INET, sin_port=htons(44731), 
> sin_addr=inet_addr("127.0.0.1")}, [16]) = 3
> rt_sigaction(SIGUSR1, {SIG_IGN}, {0x805fd6a, [], SA_RESTORER|SA_INTERRUPT, 
> 0x27cff7b8}, 8) = 0
> fcntl64(3, F_SETFD, FD_CLOEXEC)         = 0
> getsockname(3, {sa_family=AF_INET, sin_port=htons(80), 
> sin_addr=inet_addr("127.0.0.1")}, [16]) = 0
> setsockopt(3, SOL_TCP, TCP_NODELAY, [1], 4) = 0
> read(3,
>  и тут длинная пауза
> В дебаге nginx это выглядит так
>
> 13:41:00 [debug] 18319#0: *230678 socket 371
> 13:41:00 [debug] 18319#0: *230678 rtsig add connection: fd:371 signo:45
> 13:41:00 [debug] 18319#0: *230678 connect to 127.0.0.1:80, fd:371 #230679
> 13:41:00 [debug] 18319#0: *230678 http upstream connect: -2
> 13:41:00 [debug] 18319#0: *230678 event timer add: 371: 60000:3658318242
> 13:41:19 [debug] 18319#0: *230678 http upstream send request handler
> 13:41:19 [debug] 18319#0: *230678 http upstream send request
> 13:41:19 [debug] 18319#0: *230678 chain writer buf size: 476
>
> Т.е. 19 секунд (это пример, бывает и больше и меньше).

В общем, есть ощущение, что в ядре что-то поломали с tcp соединениями
на localhost. А где можно посмотреть changelog'и c linux-2.4.27 до
linux-2.4.32 ?

> Igor Sysoev wrote:
>> On Thu, 28 Sep 2006, Dmitriy MiksIr wrote:
>> 
>>> Можно, конечно, но как это поможет?  Соединения отваливаются по таймауту 
>>> nginx-а к бекенду.. если поставлю таймаут у апача меньше - нормально 
>>> работать это не поможет - nginx будет ошибки клиенту давать...
>>> 
>>> Пытаюсь смотреть в сторону настройки tcp соединений... хотя, по статистики 
>>> nginx "Active connections: 336" не так уж и много, имхо. Пока ничего не 
>>> получается.
>>> После ребута сервера все, вроде, на какое-то время нормализуется....
>> 
>> А когда эта проблем стала проявляться ?
>> Что менялось - версия nginx'а, версия ядра ?


Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list