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

Igor Sysoev igor на sysoev.ru
Пн Дек 14 12:30:30 MSK 2009


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 постоянно.

> Кто нибудь сталкивался с подобными проблемами ? Использовать
> proxy_pass не хочется, т.к там придется в ручную вычищать
> даннные из кешей.

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


-- 
Игорь Сысоев
http://sysoev.ru



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