CentOS 5.5 + nginx + aio
Alex Vorona
voron на amhost.net
Вт Июл 6 11:22:58 MSD 2010
Привет,
На CentOS 5.5 (2.6.18-194.8.1.el5) nginx 0.8.44 вдруг собрался с файловым aio, и, судя по
strace'ам, aio даже заработал, что может только радовать.
Однако при включенном aio наблюдается утечка коннектов
# lsof -np $(echo `ps uax|grep "nginx: worker"|egrep -v 'shutting|grep'|awk '{print
$2}'`|sed 's/ /,/g')|grep " sock "|head
nginx 22045 apache 110u sock 0,5 859401 can't identify protocol
nginx 22045 apache 157u sock 0,5 861369 can't identify protocol
nginx 22045 apache 196u sock 0,5 859508 can't identify protocol
nginx 22045 apache 212u sock 0,5 859520 can't identify protocol
nginx 22045 apache 234u sock 0,5 864437 can't identify protocol
nginx 22045 apache 383u sock 0,5 864993 can't identify protocol
nginx 22045 apache 405u sock 0,5 866298 can't identify protocol
nginx 22045 apache 406u sock 0,5 860328 can't identify protocol
nginx 22045 apache 424u sock 0,5 860453 can't identify protocol
nginx 22045 apache 456u sock 0,5 864752 can't identify protocol
# lsof -np $(echo `ps uax|grep "nginx: worker"|egrep -v 'shutting|grep'|awk '{print
$2}'`|sed 's/ /,/g')|grep " sock "|wc -l
389
# lsof -np $(echo `ps uax|grep "nginx: worker"|egrep -v 'shutting|grep'|awk '{print
$2}'`|sed 's/ /,/g')|grep " sock "|wc -l
544
В stub_status аномально растут Writting, worker'ы nginx кушают всё больше памяти. aio
включен в
location ~ \.flv$ {
flv;
# directio 2m;
read_ahead 1;
aio on;
directio 512;
output_buffers 2 512k;
}
Отключение aio с последующим релоадом убирает проблему, в error_log после выхода
работавших с aio worker'ов сообщения вида
2010/07/06 10:42:01 [alert] 14634#0: open socket #2058 left in connection 226
2010/07/06 10:42:01 [alert] 14634#0: open socket #880 left in connection 227
2010/07/06 10:42:01 [alert] 14634#0: open socket #1404 left in connection 229
nginx version: nginx/0.8.44
built by gcc 4.1.2 20080704 (Red Hat 4.1.2-48)
TLS SNI support disabled
configure arguments: --user=nginx --group=nginx --prefix=/usr/share/nginx
--sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf
--error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log
--http-client-body-temp-path=/var/lib/nginx/tmp/client_body
--http-proxy-temp-path=/var/lib/nginx/tmp/proxy
--http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --pid-path=/var/run/nginx.pid
--lock-path=/var/lock/subsys/nginx --with-debug --with-http_ssl_module
--with-http_realip_module --with-http_addition_module --with-http_sub_module
--with-http_dav_module --with-http_flv_module --with-http_gzip_static_module
--with-http_stub_status_module --with-cc-opt='-O2 -g -m32 -march=i386 -mtune=generic
-fasynchronous-unwind-tables' --with-file-aio --with-debug
Игорь, это ожидаемое поведение и нормальной работы aio на CentOS 5.5 ждать не стОит, или
же это можно исправить?
Подробная информация о списке рассылки nginx-ru