Утечка файл дескрипторов?

Igor Sysoev is at rambler-co.ru
Wed Mar 16 13:56:49 MSK 2005


On Wed, 16 Mar 2005, Mike Kolesnikov wrote:

> Igor Sysoev wrote:
>
>>> Сейчас кстати кол-во свободных дескрипторов устаканилось:
>>> cat /proc/sys/fs/file-nr
>>> 1993    969     104032
>>> Я буду следить за ситуацией, lsof и /proc/<pid>/fd нам помогут :)
>
> Докладаю:
> cat /proc/sys/fs/file-nr
> 1993    861     104032
>
> Число занятых дескрипторов потихоньку растет.
>
> ls /proc/<pid>/fd |wc -l
> 281
>
> Вчера вечером было меньше 200 - колебалось в районе 170.
>
> lsof -n |grep nginx |grep <pid> |grep TCP |wc -l
> 62
>
> lsof -n |grep nginx |grep <pid> |grep REG |wc -l
> 223
>
> Наконец, самое интересное:
> lsof -n|grep nginx|grep REG|awk '{print $9}'|sort|uniq -c|sort -nr
>    213 /home/ads/website/index.php
>      4 /usr/local/nginx/logs/error.log
>      2 /var/log/httpd/ads-error_log
>      2 /usr/local/nginx/sbin/nginx
>      2 /usr/lib/libz.so.1.1.4
>      2 /lib/tls/libc-2.3.2.so
>      2 /lib/libnss_files-2.3.2.so
>      2 /lib/ld-2.3.2.so
>      1 /home/ads/website/banners/medusapoweranalyzerplus01.swf
>
> Что бы это значило? index.php просто перенаправляет на /admin/index.php

Запрос / попадает в "location /". Для него пробуются индексы
index.php, index.htm и index.html. Подходит первый - index.php.

> Может, что-то с директивой index или fastcgi_index?
> Вот как они используются в конфиге:
>
>        location ~* ^.+\.(php|phtml)$ {
>                fastcgi_pass  localhost:1234;
>                fastcgi_root   /home/ads/website;
>                fastcgi_index  index.php;
>
>                fastcgi_connect_timeout       10;
>                fastcgi_send_timeout          2m;
>                fastcgi_read_timeout          3m;
>
>                fastcgi_header_buffer_size    64k;
>                fastcgi_buffers               8 32k;
>                fastcgi_busy_buffers_size     64k;
>                fastcgi_temp_file_write_size  256k;
>
>                fastcgi_x_powered_by       off;
>        }
>
>        location / {
>            root         /home/ads/website;
>            index        index.php index.htm index.html;
>            expires      30d;
>        }
>
>> Да, судя по всему, второе поле означает число свободных file handles
>> из тех что уже были выделены (первое число). Я просто тыкнул в две ссылки
>> в Гугле и прочитал про unused. Но в любом случае, в системе не
>> использовалось одновременно больше 1993 файлов. Стало быть, это не утечка,
>> а limit. А что показывает nginx при запуске в самом начале про
>> getrlimit(RLIMIT_NOFILE) ?
>
> Так и утечка будет упираться в лимит точно так же, так что это не
> показатель.
> 2005/03/16 04:33:13 [info] 10874#0: getrlimit(RLIMIT_NOFILE): 1024:1024


Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list