Re[2]: Бага между 0.7.24 и 0.7.26

Михаил Монашёв postmaster at softsearch.ru
Wed Apr 8 00:28:49 MSD 2009


Здравствуйте, Игорь.

Tuesday, April 7, 2009, 10:18:51 PM, Вы писали:

IS> On Tue, Apr 07, 2009 at 08:40:59PM +0400, Монашёв Михаил wrote:

>> Здравствуйте, Игорь.
>> 
>> >> >> Я  всё  никак  не  могу  справиться  с  ошибкой,  связанной  с  ростом
>> >> >> Writing-соединений в stub-статусе. Из-за неё я не могу обновлять nginx
>> >> >> и  застрял  на  0.7.24.  Просил  смотреть двоих знакомых сишников, они
>> >> >> потратили  много времени, но ошибка не нашлась. Воспроизвести её также
>> >> >> не  удаётся.  Воспроизводится  она  только  под  нагрузкой, причём при
>> >> >> плавном её росте. Игорь, мог бы ты посмотреть эту ошибку?
>> >> >> 
>> >> 
>> >> > А с последней версией такая же проблема?
>> >> 
>> >> > после того как в 0.7.25 поменялась обработка подзапросов у
>> >> нас тоже была похожая проблема, но
>> >> > потом она была исправлена (скорее всего в 0.7.29 судя по
>> >> > changelog) и в 0.7.43 такой проблемы 
>> >> > не наблюдается.
>> >> 
>> >> Ошибка осталась. Вчера вечером обновил nginx-devel из портов до 0.7.50
>> >> в  надежде,  что ошибка рассосалась. Но к обеду бага уже была видна на
>> >> графиках. Собственно говоря вот:
>> http://83.222.14.150/nginx_status
>> >> 
>> >> Нормальное значение у Writing - 100-150.
>> 
>> > Я правильно понимаю, что используются только стандартные модули ?
>> 
>> Да. nginx из портов.
>> 
>>  /usr/local/sbin/nginx -V
>> nginx version: nginx/0.7.50
>> configure arguments: --prefix=/usr/local/etc/nginx
>> --with-cc-opt=-I /usr/local/include --with-ld-opt=-L /usr/local/lib
>> --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
>> --http-client-body-temp-path=/var/tmp/nginx/client_body_temp
>> --http-proxy-temp-path=/var/tmp/nginx/proxy_temp
>> --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi_temp
>> --http-log-path=/var/log/nginx-access.log --with-http_dav_module
>> --with-http_realip_module --with-http_stub_status_module --with-pcre

IS> Чем занимается сервер - статика, PUT, memcached, limit-его-то ... ?
IS> У себя нигде такого не видел, но у меня используется не вся функциональность.

Раздача статики с кучи хостов, webdav и проксирование к trac-у и
gitweb-у . Вот конфиг без изменений.

> cat /usr/local/etc/nginx/nginx.conf
# на набольшем числе воркеров не включать
#timer_resolution 100ms;

#user  nobody;
worker_processes  1000;

error_log  /opt/log/nginx/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
        use kqueue;
        worker_connections 2024;
        #worker_connections 16384;
        #accept_mutex  off;
}


http {
    types {
        text/html                             html htm shtml;
        text/css                              css;
        text/xml                              xml;
        image/gif                             gif;
        image/jpeg                            jpeg jpg;
        application/x-javascript              js;
        text/plain                            txt;
        image/png                             png;
        image/x-icon                          ico;
        application/x-shockwave-flash         swf;
        audio/mpeg                            mp3;
        application/x-gzip                    gz;
    }
    default_type  application/octet-stream;

    log_format main  '$time_local $remote_addr $bytes_sent $host "$request" $status "$http_referer" "$http_user_agent"';
    #access_log  /opt/log/nginx/access.log main  buffer=256k;
    #access_log  /opt/log/nginx/access.log main;
    access_log off;

    sendfile_max_chunk  128k;
    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    send_lowat          12000;

    keepalive_timeout   75 60;

    output_buffers      1 8k;
    postpone_output     1460;

    # don't compress for varnish. it cache all content uncompressed
    gzip  off;
    #gzip_types      text/html application/x-javascript text/css text/xml;

    reset_timedout_connection on;

    server_names_hash_max_size 32768;

    log_not_found off;

    client_max_body_size 20m;

    proxy_set_header        Host                    $host;

    #open_file_cache            off;
    #open_file_cache            max=20000       inactive=120s;
    #open_file_cache_valid      120s;
    #open_file_cache_errors     off;

    server {
        listen          83.222.14.150:80 default accept_filter=httpready rcvbuf=4096 sndbuf=131072;
        server_name     for.trash.ru;

        location / {
            return 204;
        }

        location = /nginx_status {
            stub_status on;
        }
    }

    server {
        listen 83.222.14.150:80;

        server_name openhack.ru;
        location / {
            proxy_set_header    X-Real-IP  $remote_addr;
            proxy_redirect      http://127.0.1.21:8000/   http://openhack.ru/;
            proxy_pass          http://127.0.1.21:8000;
        }
    }

    server {
        listen 83.222.14.150:80;

        server_name www.openhack.ru;

        location / {
            rewrite ^/(.*)$ http://openhack.ru/$1 permanent;
        }
    }

    server {
        listen 83.222.14.150:80;

        server_name git.openhack.ru;
        location / {

            proxy_set_header    X-Real-IP  $remote_addr;
            #proxy_redirect     http://127.0.1.22:80/   http://git.openhack.ru/;
            proxy_pass          http://127.0.1.22:80;
        }
    }

    include servers;
}


В servers описано много server {}
> grep -c server_name /usr/local/etc/nginx/servers
1089

Вот пример первого сервера:

> head  /usr/local/etc/nginx/servers

        server {
                listen 83.222.14.150:80;
                server_name i0.carguru.ru b.i0.carguru.ru;

                rewrite  ^(/\d+/\d+/\d+/)\d+/(avatars/.+|design/.+|0\.(?:gif|jpeg|png|mp3))$  /$1$2  last;

                location / {
                        expires                 1y;
                        root                    /opt1/cargururu/i0;
                        if ($request_method = GET ) {
                                error_page              404 = @fallback;
                        }
                        client_body_temp_path   /opt1/cargururu/webdav-tmp;
                        dav_methods             PUT DELETE COPY MOVE;
                        create_full_put_path    on;
                        dav_access              user:rw group:rw all:r;
                        limit_except GET {
                                allow   127.0.0.0/8;
                                allow   10.0.0.0/8;

                                allow   89.208.146.216/29;
                                allow   89.208.146.224;
                                allow   89.208.146.212/30;
                                allow   89.208.146.210/31;
                                allow   89.208.146.209;
                                allow   89.208.145.139;

                                deny    all;
                        }
                }
                location @fallback {
                        expires 1s;
                        rewrite ^.*$ http://a0.carguru.ru/i/users$request_uri redirect;
                }
        }


Подозреваю, что утечка происходит при запросах к openhack.ru или
git.openhack.ru . Там отвечают trac и gitweb соотвественно.
        
--

С уважением,
Михаил Монашёв, SoftSearch.ru
mailto:postmaster at softsearch.ru
ICQ# 166233339
http://michael.mindmix.ru/
Без бэкапа по жизни.






More information about the nginx-ru mailing list