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