Re: fastcgi_cache в nginx
Ладоха Антон
ladokha на gup.ru
Пт Мар 19 23:02:18 MSK 2010
nginx version: nginx/0.7.65
built by gcc 4.2.1 20070719 [FreeBSD]
configure
arguments: --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/etc/nginx.conf
--pid-path=/usr/local/nginx/nginx.pid --with-pcre=../pcre-7.0 --with-zlib=../zlib-1.2.3
--with-http_stub_status_module
sendfile on;
tcp_nodelay on;
server_names_hash_max_size 1024;
server_names_hash_bucket_size 512;
client_header_timeout 3m;
client_body_timeout 3m;
client_max_body_size 40m;
send_timeout 3m;
proxy_intercept_errors on;
proxy_next_upstream off;
proxy_read_timeout 4s;
proxy_send_timeout 4s;
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
output_buffers 1 32k;
postpone_output 1460;
tcp_nopush on;
send_lowat 12000;
charset windows-1251;
keepalive_timeout 0;
gzip off;
gzip_min_length 1100;
gzip_types text/plain text/html application/x-javascript ;
server
{
listen x.x.x.x:80;
server_name xxxxxxxx ;
ssi on;
error_page 502 503 504 /err504.shtml;
location ~*
\.(swf|zip|rar|arj|gz|cab|exe|dll|ico|jpg|jpeg|gif|bmp|png|mp3|avi|mov|mpg|mpeg|txt|amr|mmf|wml|wbmp|mid|midi|3gp|js|css|htm|html|shtml?)$
{
charset off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
if (!-f $request_filename)
{
break;
proxy_pass http://y.y.y.y:80;
}
root zzzzz;
}
location /
{
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_pass http://y.y.y.y:80;
}
}
----- Original Message -----
From: "Maxim Dounin" <mdounin at mdounin.ru>
To: <nginx-ru at nginx.org>
Sent: Friday, March 19, 2010 9:51 PM
Subject: Re: fastcgi_cache в nginx
> Hello!
>
> On Fri, Mar 19, 2010 at 08:12:33PM +0200, Alex Vasilenko wrote:
>
>> Имеется кастомный nginx 0.7.65, fedora 12 и 80гб закэшированных данных, в
>> среднем 30кб на файлик.
>> Кастомность заключается в том что sleep для cache loader увеличен с 200мс
>> до
>> 2сек + добавлены патчи (
>> http://nginx.org/pipermail/nginx-devel/2010-January/000101.html и
>> http://nginx.org/pipermail/nginx-devel/2010-January/000102.html)
>> Конфиг кэширования:
>>
>> fastcgi_cache_path /backup/nginx-cache/ levels=1:2 keys_zone=one:1024M
>> inactive=28d max_size=250G;
>>
>> В среднем 1к файликов на директорию, fs - ext3, noatime, data=ordered.
>> Отдельный SATA диск под все это безобразие.
>>
>> Проблемы появляются в 2х случаях:
>>
>> 1. рестарт nginx;
>> 2. увеличение нагрузки.
>>
>> В 1 случае стартует nginx cache loader, который обходит весь кэш за
>> сутки.
>> CPU iowait в это время неприлично скачет. Можно ли безболезненно
>> отключить
>> cache loader?
>
> Без loader'а nginx как минимум не сможет следить за размером кеша.
>
>> 2й случай гораздо интереснее. При постоянном рандомном обращении в 30
>> запросов в секунду, load avg на сервере с 0.2 увеличивается до 7, само
>> время
>
> Если мне не изменяет мой cклероз, на линуксе load avg включает
> процессы ждущие диска. Вероятнее всего вы просто упёрлись в
> диски. Решение - тюнить дисковую подсистему, добавлять дисков, ну
> или просто перелезать на SSD.
>
> В случае большого количества worker'ов это также может быть lock
> contention (симптом - воркеры жрут 100% CPU, видно в top'е,
> наблюдалось если мне не изменяет память на 30 или около того).
> Лечить уменьшением количества воркеров до разумного.
>
>> ответа скачет до 10сек. Пробовали перевести на SATA RAID 1, load avg стал
>> прыгать до 35(!).
>
> Не все raid'ы одинаково полезны.
>
> Maxim Dounin
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://nginx.org/mailman/listinfo/nginx-ru
>
__________ хМТНПЛЮЖХЪ НР ESET NOD32 Antivirus, БЕПЯХЪ АЮГШ ДЮММШУ ЯХЦМЮРСП БХПСЯНБ 4075 (20090514) __________
яННАЫЕМХЕ ОПНБЕПЕМН ОПНЦПЮЛЛНИ ESET NOD32 Antivirus.
http://www.esetnod32.ru
Подробная информация о списке рассылки nginx-ru