Re: proxy_cache и большой кэш

Игорь Хомяков homyakov на embria.ru
Пн Дек 14 14:12:33 MSK 2009


2009/12/14 Igor Sysoev <igor на sysoev.ru>:
> On Mon, Dec 14, 2009 at 11:58:54AM +0300, Игорь Хомяков wrote:
>
>> Здравствуйте !
>>
>> === Вводная часть ===
>> Есть несколько серверов  которые должены работать как кэш для картинок,
>> конфиг одинаковый
>> FreeBSD 7.2-STABLE amd64
>> nginx version: nginx/0.7.64
>> Память 6Gb
>> Диски 3 x SATA HDD
>>
>> 3 дисковых кэша + 1 memory disk
>>
>> на каждый диск создан proxy_cache_path
>> proxy_cache_path  /disk0/cache levels=1:2 keys_zone=DISK0:64m inactive=3d;
>>
>> Запросы распределены по дисковым кешам с помощью location-ов более
>> менее равномерно.
>>
>> proxy_cache_valid  200 301 302 304 72h;
>>
>> proxy_cache_use_stale   updating error timeout invalid_header;
>> proxy_ignore_client_abort on;
>> proxy_cache_min_uses    1;
>>
>> worker_processes  4;
>> worker_connections  8192;
>>
>> sendfile        on;
>> tcp_nopush     on;
>> tcp_nodelay      on;
>>
>> keepalive_timeout  1;
>> reset_timedout_connection on;
>>
>> На кэш сервер прилетает около  700 запросов в сек.
>>
>> обычный top выглядит так
>> load averages:  0.05,  0.08,  0.08
>> 33 processes:  1 running, 32 sleeping
>> CPU:  1.3% user,  0.0% nice,  2.3% system,  0.4% interrupt, 96.0% idle
>> Mem: 172M Active, 69M Inact, 5510M Wired, 174M Cache, 623M Buf, 5992K Free
>> Swap: 4096M Total, 52M Used, 4044M Free, 1% Inuse, 48K In
>>
>> заполняемость кешей в среднем  20Gb для HDD и 2Gb для memory disk
>>
>> === Проблема ===
>>
>> 1-2 дня все работает нормально, идет процесс заполнения кешей, затем сервер
>> начинает уходить в swap ростет кол-во чтений на дисках (по gstat),
>> lsof показывает что
>> nginx читает кэш на диске. отдача тормозит сервер выпадает из
>> upstream-ов.  иногда это заканчивается
>> тем что сервер вообще перестает отвечать. через 10-15 минут после
>> отключений трафика всё приходит в норму
>>
>> Есть подозрение что в эти моменты cache manager чистит inactive записи
>> и "забивает" дисковый ввод-вывод
>
> Cache manager чистит inactive постоянно.
а если у элементов кеша inactive очень близко ?

>> Кто нибудь сталкивался с подобными проблемами ? Использовать
>> proxy_pass не хочется, т.к там придется в ручную вычищать
>> даннные из кешей.
>
> Есть ощущение, что вся память уходит в md (5510M Wired), он похоже,
> не меньше 4G. Одного не могу понять, зачем вообще его использовать ?

часть картинок запрашивается на порядок чаще других, по этому их вынесли на
memory disk с размерами сейчас экспериментируем
-- 
WBR
Igor Homyakov
System Administrator, Embria


Подробная информация о списке рассылки nginx-ru