ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[patch] Боремся с переполне нием spool


  • To: nginx-ru@xxxxxxxxx
  • Subject: [patch] Боремся с переполне нием spool
  • From: Andrey Zonov <andrey.zonov@xxxxxxxxx>
  • Date: Fri, 27 Mar 2009 10:45:45 +0300
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from :user-agent:mime-version:to:subject:content-type :content-transfer-encoding; bh=Bkh7mqAwhKPnthKcobexvwvefNn9akSy+G4JIFR7AkI=; b=WOXr7snPzeIN3h2jI/83iATZlZu5nQ4YR1OzMaQPk6wj/QRRxqBNiyaZqq0J+FaMBv jA3hT3r/mWmF24Ya028JDLUI7K5dj1fi/Cltk4XP3qdV6J8+9UvPikhBZlIJ8Zhpy8Rt QbKajA5SDKSp5T/SMkKrbeVQSd9OZNEs1pEIM=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:subject :content-type:content-transfer-encoding; b=grurzC3Kf7YbKIqFaa5jrL5GfD2O326Bb7AE1xW1i6hSwCkeSzJW0GwteeJ9AIZNx1 syDcQp+u9F8M7Sb87jGLTX6yeQikCzjapwN/3lrxPN+GwQiCcXblDdtdWPr8zcktwDpt xNI83AwUR1LBz04RZ+YmlAGYV5ciXP6Vm3y9k=

 Доброе утро.

Сделал костыль который решает проблему с пустым ответом при переполнении spool-а. Теперь proxy_temp_path и proxy_store/proxy_cache_path можно разнести на разные диски и при переполнении proxy_store/proxy_cache_path не будет происходить отдача пустого тела.

 Как это работает (во freebsd):
1. патчим, пересобираем, инсталлируем и делаем upgrade
cp patch-ngx_file.c patch-ngx_files.c patch-ngx_files.h /usr/ports/www/nginx-devel/files
 cd /usr/ports/www/nginx-devel && make deinstall install clean
 /usr/local/etc/rc.d/nginx upgrade
2. создаём memory-disk на N мб
 mdconfig -a -t malloc -o reserve -s Nm
 newfs ... /dev/md0
 mkdir /data/nginx/spool
 mount /dev/md0 /data/nginx/spool
 chown nobody /data/nginx/spool
3. меняем в конфиге
 proxy_temp_path         /data/nginx/cache/spool ...
 proxy_cache_path        /data/nginx/cache ...
на
 proxy_temp_path         /data/nginx/spool ...
 proxy_cache_path        /data/nginx/cache ...
4. релоадим nginx
 /usr/local/etc/rc.d/nginx reload
5. смотрим логи...

Недостатки:
   * большее потребление cpu
* при переполнении proxy_store/proxy_cache_path сыплются ошибки в error лог о нехватке места (хотя это поведение не сложно изменить)
Достоинства:
   * можно использовать весь выделенный объём ресурсов для хранения кеша
   * можно отрывать "следилки" за переполнением диска
* если proxy_temp_path и proxy_store/proxy_cache_path остаются жить на одном диске - для вас ни чего не меняется
Патч для 0.7.44.

PS: хочется конечно получить "ручки" от автора.
Мне видится несколько:
   * возможность замапить spool в памяти заданного размера
* что-то на подобие моего патча, но с возможностью вкл/выкл - ввиде строки в конфиге * для мелких файлов (размер задавать через конфиг) делать mmap вместо read (хотя в случае с memory disk - это не принципиально)

--
Andrey Zonov



 




Copyright © Lexa Software, 1996-2009.