kqueue change list is filled up

Serge sanet33 at gmail.com
Fri Jul 22 23:58:56 MSD 2005


Спасибо!
netstat/vmstat все нормально показывают. netstat -m правда показывает
страшные вещи :), но машинка SMP, об этом уже был разговор недавно...
Видимо, все-таки в ab дело. Из мана ab:
"BUGS: There are various statically declared buffers of fixed length. Combined
with  inefficient  parsing  of the command line arguments, the response
headers from the server, and other external inputs, these buffers might
overflow."
Потому как с другой машины тот же тест проходит на ура. 

Заметил, кстати, еще такую вещь - при запросе HTTP/1.0 и указании
Connection: Keep-Alive nginx отвечает Keep-Alive в случае запроса
статического контента и закрывает соединение случае запроса
динамического ( проксируемого или fastcgi ) контента. Это фича или
баг? Просто я не очень разбираюсь, насколько распространены такие
запросы, но вот ab как раз так их и делает.



22.07.05, Igor Sysoev<is at rambler-co.ru> написал(а):
> 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
> 
> 


-- 
Best Regards, Serge
icq 36051319


More information about the nginx-ru mailing list