Welcome! Log In Create A New Profile

Advanced

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

Maxim Dounin
August 18, 2015 07:40AM
Hello!

On Tue, Aug 18, 2015 at 09:40:15AM +0300, Gena Makhomed wrote:

> On 17.08.2015 23:10, Maxim Dounin wrote:
>
> >>>Наиболее неприятный из известных мне нюансов состоит в том, что
> >>>неразблокированные элементы кеша остаются, если какому-либо из
> >>>рабочих процессов сказать TERM. Например, такое иногда практикуют
> >>>для принудительного завершения старых рабочих процессов, плавное
> >>>завершение которых занимает слишком много времени.
> >>
> >>Эту проблему можно решить, если элементы кеша блокировать не навсегда,
> >>а на какое-то определенное количество времени, и по прошествии этого
> >>времени - считать существующую блокировку элемента недействительной.
> >
> >Чтобы блокировать "не навсегда", умеющий это обрабатывать код
> >должен быть в том числе со стороны запроса, которому данная
> >блокировка нужна. Чтобы периодически блокировку обновлял, и был
> >готов к тому, что её уберут, и всё это - со всеми прилагающимися
> >дополнительными затратами ресурсов. В противном случае - будут
> >segfault'ы, если таки выкинут нужную блокировку.
>
> Хорошо, тогда другое предложение:
>
> В функции ngx_shmtx_lock блокировка делается через
> ngx_atomic_cmp_set, при этом, вместо 0 записывается
> ngx_pid, следовательно, если блокировка стоит -
> всегда можно узнать, какой именно процесс
> эту блокировку поставил.

Речь про блокировки отдельных элементов кеша, а не всей зоны
разделяемой памяти. С зоны разделяемой памяти блокировку после
падения процессов мы снимать умеем, см. ngx_shmtx_force_unlock().

[...]

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

Их никто не удаляет, их перемещают и ругаются в лог. См.
ngx_http_file_cache_expire().

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

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

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

kpoxa August 13, 2015 11:44AM

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

Maxim Dounin August 13, 2015 02:20PM

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

kpoxa August 14, 2015 07:30AM

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

kpoxa August 14, 2015 12:16PM

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

Maxim Dounin August 17, 2015 07:58AM

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

Gena Makhomed August 17, 2015 02:36PM

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

Maxim Dounin August 17, 2015 04:12PM

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

Gena Makhomed August 18, 2015 02:42AM

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

Maxim Dounin August 18, 2015 07:40AM

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

Gena Makhomed August 19, 2015 09:56AM

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

Maxim Dounin August 24, 2015 12:02PM

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

kpoxa August 19, 2015 10:08AM

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

Maxim Dounin August 24, 2015 12:14PM

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

kpoxa August 25, 2015 04:24AM

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

Maxim Dounin August 25, 2015 09:18AM

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

vergil January 26, 2016 10:42AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 310
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready