Re: Master процесс nginx 0.6.38 съедает всю доступную память

Одинцов Павел pavel.odintsov at googlemail.com
Fri Sep 11 10:38:23 MSD 2009


Добрый день!

К сожалению нет, не он :(

Пересобрали в максимально легкой конфигурации:

 /usr/sbin/nginx -V
nginx version: nginx/0.6.38
built by gcc 4.1.2 20080704 (Red Hat 4.1.2-44)
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-http_realip_module
 --with-http_stub_status_module

 --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2
-fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64
-mtune=generic'

Но всё равно только что повис с 12 гб памяти, съеденными мастером;
оставалась последняя надежда, что stub_status память как-то выедает,
но судя по коду src/http/modules/ngx_http_stub_status_module.c выедать
её ему негде :(

2009/9/10 Igor Sysoev <is at rambler-co.ru>:
> On Thu, Sep 10, 2009 at 01:53:43AM +0500, Одинцов Павел wrote:
>
>> Добрый вечер!
>>
>> Не помогло, баг воспроизвелся :( Возник ещё ряд подозрений..
>>
>> /usr/sbin/nginx -V
>> nginx version: nginx/0.6.38
>> built by gcc 4.1.2 20080704 (Red Hat 4.1.2-44)
>> configure arguments:
>>  --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
>>  --with-http_perl_module
>>
>> Может nginx не может сохранять временные файлы? Пермишены на папки следующие:
>
> Нет, мастер-процесс не создаёт ни одного временного файла.
>
>> sudo ls -la /var/lib/nginx/tmp/client_body
>> total 8
>> drwx------ 2 nginx root  4096 Sep 10 00:49 .
>> drwxr-xr-x 5 nginx nginx 4096 Sep  8 14:20 ..
>>
>> sudo ls -la /var/lib/nginx/tmp/proxy
>> total 48
>> drwx------  12 nginx root  4096 Apr 29 07:23 .
>> drwxr-xr-x   5 nginx nginx 4096 Sep  8 14:20 ..
>> drwx------ 102 nginx nginx 4096 May 16 19:11 0
>> drwx------ 102 nginx nginx 4096 May 16 19:11 1
>> drwx------ 102 nginx nginx 4096 May 16 19:11 2
>> drwx------ 102 nginx nginx 4096 May 16 19:11 3
>> drwx------ 102 nginx nginx 4096 May 16 19:11 4
>> drwx------ 102 nginx nginx 4096 May 16 19:11 5
>> drwx------ 102 nginx nginx 4096 May 16 19:11 6
>> drwx------ 102 nginx nginx 4096 May 16 19:11 7
>> drwx------ 102 nginx nginx 4096 May 16 19:11 8
>> drwx------ 102 nginx nginx 4096 May 16 19:11 9
>>
>> Также вопрос -- может ли эксперементальный модуль перла есть память?
>
> Да, пожалуй, перл это единственный источник таких огромных утечек памяти
> в мастер-процессе после переконфигураций.
>
>> 2009/9/8 Одинцов Павел <pavel.odintsov at googlemail.com>:
>> > Добрый день!
>> >
>> > Спасибо большое, Игорь, за ответ. Пересобрали без fair, следим за нагрузкой.
>> >
>> > 2009/9/8 Igor Sysoev <is at rambler-co.ru>:
>> >> On Tue, Sep 08, 2009 at 01:18:21AM +0500, Одинцов Павел wrote:
>> >>
>> >>> Добрый вечер
>> >>>
>> >>> Имеется очень противная проблема, nginx 0.6.38 (epel репозиторий)
>> >>> стоит проксей перед хостинговой Апачей и попутно раздает статику;
>> >>> изредка на паре машин из полутора десятков nginx (master процесс)
>> >>> начинает жутко поедать память и в итоге через пару минут сваливает
>> >>> машину. Подозрения о причинах такого поведения есть в сторону буферов
>> >>> и проксирования больших файлов от Апача, но тут ничего толком не
>> >>> получилось понять.  Помогайте :(
>> >>>
>> >>> Вот вывод top в этот момент:
>> >>>
>> >>> top - 11:38:50 up 23:26, 1 user, load average: 53.15, 50.24, 24.40
>> >>> Tasks: 130 total, 3 running, 120 sleeping, 0 stopped, 7 zombie
>> >>> Cpu(s): 0.0%us, 0.2%sy, 0.0%ni, 67.3%id, 32.5%wa, 0.0%hi, 0.0%si, 0.0%st
>> >>> Mem: 10240000k total, 5919988k used, 4320012k free, 12036k buffers
>> >>> Swap: 4194296k total, 3842072k used, 352224k free, 128848k cached
>> >>>
>> >>>   PID  USER  PR  NI  VIRT  RES  SHR  S  %CPU %MEM TIME+   COMMAND
>> >>>  1731  root      18  0  10.6g  4.6g   892   R  0.3       47.4     6:34.06 nginx
>> >>>
>> >>> Конфиг:
>> >>>
>> >>> user              nginx;
>> >>> worker_processes  1;
>> >>> error_log         /var/log/nginx/error.log;
>> >>> pid               /var/run/nginx.pid;
>> >>>
>> >>> events {
>> >>>     worker_connections  10024;
>> >>> }
>> >>>
>> >>> http {
>> >>>     include       /etc/nginx/mime.types;
>> >>>     default_type  application/octet-stream;
>> >>>
>> >>>     proxy_buffers 8 16k;
>> >>>     proxy_buffer_size 32k;
>> >>>
>> >>>     access_log  /var/log/nginx/access.log  main;
>> >>>     sendfile        on;
>> >>>     keepalive_timeout  65;
>> >>>
>> >>>       client_max_body_size 16m;
>> >>>       server_names_hash_bucket_size 64;
>> >>>       server {
>> >>>               listen xx.xx.xx.xx:80;
>> >>>               server_name server6.hostname.ru;
>> >>>
>> >>>               location / {
>> >>>                       proxy_pass http://xx.xxx.xx.xx:8080;
>> >>>                       proxy_redirect http://server6.hostname.ru:8080/ /;
>> >>>                       proxy_set_header Host $host;
>> >>>                       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
>> >>>                       proxy_set_header X-Real-IP $remote_addr;
>> >>>               }
>> >>>               location @fallback {
>> >>>                       proxy_pass http://xx.xxx.xx.xxx:8080;
>> >>>                       proxy_set_header Host $host;
>> >>>                       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
>> >>>                       proxy_set_header X-Real-IP $remote_addr;
>> >>>               }
>> >>>       }
>> >>>
>> >>>
>> >>>
>> >>> Конфигурация:
>> >>>
>> >>> uname -a
>> >>> Linux server6.hostname.ru 2.6.18-128.1.10.el5xen #1 SMP Thu May 7
>> >>> 11:07:18 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux
>> >>>
>> >>> cat /etc/redhat-release
>> >>> CentOS release 5.3 (Final)
>> >>>
>> >>> /usr/sbin/nginx -V
>> >>> nginx version: nginx/0.6.38
>> >>> built by gcc 4.1.2 20080704 (Red Hat 4.1.2-44)
>> >>> 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-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-http_perl_module --with-mail --with-mail_ssl_module
>> >>> --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions
>> >>> -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic'
>> >>> --add-module=/builddir/build/BUILD/nginx-0.6.38/nginx-upstream-fair
>> >>
>> >> Вообще, сам мастер-процесс ничего не обрабатывает и расти ему не с чего.
>> >> У меня он обычно наименьший из всех процессов nginx'а и такого роста
>> >> я не никогда не видел. Можно попробовать убрать nginx-upstream-fair.
>> >>
>> >>
>> >> --
>> >> Игорь Сысоев
>> >> http://sysoev.ru
>> >>
>> >>
>> >
>> >
>> >
>> > --
>> > С уважением, Одинцов Павел
>> >
>>
>>
>>
>> --
>> С уважением, Одинцов Павел
>
> --
> Игорь Сысоев
> http://sysoev.ru
>
>



-- 
С уважением, Одинцов Павел


More information about the nginx-ru mailing list