Всем доброго времени суток.<div><br></div><div>В очередной раз вопрос по aio и большой куче сокетов в состоянии CLOSED. </div><div>Как собственно и в обсуждаемых ранее случаях - &quot;CLOSED&quot; магическим образом исчезают при рестарте nginx.</div>

<div><br></div><div>Все бы ничего, но не могу выловить закономерность - есть коробки под FreeBSD 7.x и 8.x, все amd64. </div><div>На некоторых из них, количество сокетов в состоянии &quot;CLOSED&quot; активно растет, на других - редко отличается от нуля.</div>

<div>Предположительно это &quot;заслуги&quot; aio, т.к. началось после включения последнего (на графиках munin это очень хорошо заметно).</div><div>Отказаться от aio к сожалению нельзя, в связи с его полезностью в условиях текущей нагрузки.</div>

<div><br></div><div><meta http-equiv="content-type" content="text/html; charset=utf-8"><div>&gt; uname -a</div><div>&gt; FreeBSD hostname.here 8.1-RELEASE FreeBSD 8.1-RELEASE #0: Mon Jul 19 02:36:49 UTC 2010     root@mason.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64</div>

</div><div><br></div><div>Для сравнения взял 2 коробки с 8.1 amd64. Везде nginx 0.8.54 собранный с одинаковыми параметрами:</div><div><br></div><div><div>&gt; root@hostname:~# nginx -V</div><div>&gt; nginx version: nginx/0.8.54</div>

<div>&gt; TLS SNI support enabled</div><div>&gt; configure arguments: --prefix=/usr/local/etc/nginx --with-cc-opt=&#39;-I /usr/local/include&#39; --with-ld-opt=&#39;-L /usr/local/lib&#39; --conf-path=/usr/local/etc/nginx/nginx.conf --sbin-path=/usr/local/sbin/nginx --pid-path=/var/run/nginx.pid --error-log-path=/var/log/nginx-error.log --user=www --group=www --with-file-aio --http-client-body-temp-path=/var/tmp/nginx/client_body_temp --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi_temp --http-proxy-temp-path=/var/tmp/nginx/proxy_temp --http-scgi-temp-path=/var/tmp/nginx/scgi_temp --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi_temp --http-log-path=/var/log/nginx-access.log --with-http_addition_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_perl_module --with-http_realip_module --with-http_secure_link_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_xslt_module --with-pcre</div>

<div><br></div><div>Конфиги nginx на коробках однотипные - используется &quot;aio on&quot;, т.к. proxy_cache на zfs/raidz.</div><div>Проблемный сервер в течение суток по нарастающей накрывает, т.к. заканчиваются kern.maxfiles/kern.maxfilesperproc.</div>

<div><br></div><div>Конфиги nginx приводить полностью не стал, т.к. там много-много всего. Выборочно:</div><div><br></div><div><div>user  nobody nogroup;</div><div>worker_rlimit_nofile 10240;</div><div>worker_processes  8;</div>

<div><br></div><div>pid        /var/run/nginx.pid;</div><div><br></div><div>events {</div><div>    worker_connections  10240;</div><div>    use kqueue;</div><div>}</div><div><br></div><div>http {</div><div>    server_names_hash_bucket_size 64;</div>

<div>    include       mime.types;</div><div>    default_type  application/octet-stream;</div><div><br></div><div>    log_format  main  &#39;$remote_addr - $remote_user [$time_local] $status &quot;$request&quot; $body_bytes_sent &quot;$http_referer&quot; &quot;$http_user_agent&quot; &quot;$http_x_forwarded_for&quot;&#39;;</div>

<div>    access_log  /var/log/nginx/access.log  main buffer=1m;</div><div><br></div><div>    sendfile        off;</div><div>    aio            on;</div><div>    server_tokens  off;</div><div><br></div><div>    output_buffers 1 128k;</div>

<div>    tcp_nopush     on;</div><div><br></div><div>    keepalive_timeout  15;</div><div>    tcp_nodelay        on;</div><div>    reset_timedout_connection on;</div><div>    uninitialized_variable_warn on;</div><div>    merge_slashes on;</div>

<div><br></div><div>    open_file_cache             max=1000 inactive=40s;</div><div>    open_file_cache_valid       60s;</div><div>    open_file_cache_min_uses    2;</div><div>    open_file_cache_errors      on;</div></div>

<div><br></div><div>    gzip  on;</div><div>    limit_zone   one  $binary_remote_addr  10m;</div><div>    limit_zone   lz_free $host 16m;</div><div><br></div><div>    limit_req_zone  $combined zone=lrz_two:32m rate=30r/m;</div>

<div>    limit_zone lz_one $combined 32m;</div><div><br></div><div>    open_log_file_cache  max=500  inactive=30m  valid=10m  min_uses=1;</div><div><br></div><div>    recursive_error_pages on;</div><div>    proxy_intercept_errors on;</div>

<div><br></div><div>    proxy_cache_path /mnt/data/nginx.pages_cache/bla1 levels=1:2 keys_zone=cache-bla1:10m inactive=90d max_size=400g;</div><div>    proxy_cache_path /mnt/data/nginx.pages_cache/bla2 levels=1:2 keys_zone=cache-bla2:10m inactive=90d max_size=150g;</div>

<div>    proxy_cache_path /mnt/data/nginx.pages_cache/bla3 levels=1:2 keys_zone=cache-bla3:10m inactive=30d max_size=10g;</div><div><br></div><div>    geoip_country /usr/local/share/GeoIP/GeoIP.dat;</div><div><br></div><div>

    &lt;SKIPPED&gt;</div><div>}</div><div><br></div><div>Сейчас сие лечится полуночным рестартом nginx по крону, но это потеря запросов на время рестарта.</div><div><meta http-equiv="content-type" content="text/html; charset=utf-8">Есть предложения/домыслы, как найти причину? Хотя бы workaround?</div>

<div><br></div><div>PS: Натягивать на 0.8.54 патчи Максима (Maxim Dounin) не стал, т.к. судя по changlelog&#39;у они уже приняты в 0.8.53. Или не все?</div><div><br></div><div>-- </div>С Уважением,<br>Костенко Евгений<br>

<br>моб: +7(928)2961142<br>icq: 101241013<br>jabber: <a href="mailto:nobody.mail@gmail.com" target="_blank">nobody.mail@gmail.com</a><br>skype: <a href="http://nobody.ru" target="_blank">nobody.ru</a><br><br>
</div>