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