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