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

Andrey Zonov andrey.zonov at gmail.com
Fri Mar 27 10:47:03 MSK 2009


Самое главное забыл...

Andrey Zonov пишет:
>  Доброе утро.
>
>  Сделал костыль который решает проблему с пустым ответом при 
> переполнении 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 - это не принципиально)
>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: patch-ngx_file.c
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20090327/0202e367/attachment.c>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: patch-ngx_files.c
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20090327/0202e367/attachment-0001.c>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: patch-ngx_files.h
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20090327/0202e367/attachment.h>


More information about the nginx-ru mailing list