kqueue change list is filled up
Igor Sysoev
is at rambler-co.ru
Fri Jul 22 21:46:09 MSD 2005
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
More information about the nginx-ru
mailing list