ПРОЕКТЫ 


  АРХИВ 


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: kqueue change list is filled up



On Fri, 22 Jul 2005, Serge wrote:

Игорь, а что значат такие строки в еррор логе:
2005/07/22 17:23:44 [warn] 31569#0: *31205 kqueue change list is
filled up while connecting to upstream, client: 205.252.49.162,
server: www.server.com, URL: "/test.php", upstream:
fastcgi://127.0.0.1:1027/test.php, host: "www.server.com"
Они появляются при попытке стресс-теста с помощью ab c другого сервака
(ab -c 500 -n 10000). При этом ab сообщает, что около 1% запросов были
Failed по причине разного размера и ошибок с коннектом. Удивительно,
что это возникает только при тесте с конкретного сервака. Если
запустить тот же тест с другого сервера, в той же сети, никаких ошибок
не происходит.
Также при локальном тесте ошибок нет.
версия nginx 0.1.40. Как раз поставил сейчас на новый сервер под FreeBSD 5.4

Это значит, что за время обработки результатов одного вызова kevent()
nginx получил много событий и заполнил весь массив с изменением событий.
Размер этого массива можно изменить директивой

events {
     kqueue_changes  1024;
     ...
}

По умолчанию размер равен 512. Особенно страшного в это нет, просто
в этом случае делается два системных вызова

    kevent(добавить изменения)
    kevent(добавить изменения, получить новые события)

вместо одного

    kevent(добавить изменения, получить новые события)

Что касается ошибок, то нужно смотреть лог nginx'а и параметры FreeBSD.
Возможно, нужно увеличить listen queue, число сокетов, файлов, mbuf'ов.
Что показывают

netstat -m
netstat -Lan
vmstat -z|egrep 'ITEM|socket|Mbuf'

?


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




 




Copyright © Lexa Software, 1996-2009.