Re: Иногда кеш растет сверх лимита

Maxim Dounin mdounin на mdounin.ru
Пн Авг 17 20:10:20 UTC 2015


Hello!

On Mon, Aug 17, 2015 at 09:35:25PM +0300, Gena Makhomed wrote:

> On 17.08.2015 14:57, Maxim Dounin wrote:
> 
> >Наиболее неприятный из известных мне нюансов состоит в том, что
> >неразблокированные элементы кеша остаются, если какому-либо из
> >рабочих процессов сказать TERM.  Например, такое иногда практикуют
> >для принудительного завершения старых рабочих процессов, плавное
> >завершение которых занимает слишком много времени.
> 
> Эту проблему можно решить, если элементы кеша блокировать не навсегда,
> а на какое-то определенное количество времени, и по прошествии этого
> времени - считать существующую блокировку элемента недействительной.

Чтобы блокировать "не навсегда", умеющий это обрабатывать код 
должен быть в том числе со стороны запроса, которому данная 
блокировка нужна.  Чтобы периодически блокировку обновлял, и был 
готов к тому, что её уберут, и всё это - со всеми прилагающимися 
дополнительными затратами ресурсов.  В противном случае - будут 
segfault'ы, если таки выкинут нужную блокировку.

На практике вполне неплохо работает вывод сообщений в логи и 
перемещение заблокированных элементов в начало очереди, 
реализованное для обработки удаления старых элементов по inactive.  
Проблемы, судя по рассылке, наблюдаются у тех, кто очистку по 
inactive фактически выключил - и, видимо, в сочетании с какой-то 
ещё проблемой, какой - пока непонятно.

-- 
Maxim Dounin
http://nginx.org/



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