ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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



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



 




Copyright © Lexa Software, 1996-2009.