Welcome! Log In Create A New Profile

Advanced

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

Gena Makhomed
August 18, 2015 02:42AM
On 17.08.2015 23:10, Maxim Dounin wrote:

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

Хорошо, тогда другое предложение:

В функции ngx_shmtx_lock блокировка делается через
ngx_atomic_cmp_set, при этом, вместо 0 записывается
ngx_pid, следовательно, если блокировка стоит -
всегда можно узнать, какой именно процесс
эту блокировку поставил.

И, вместе с тем, когда дочерний процесс завершается,
- мастер-процесс nginx получает сигнал SIGCHLD,
и может узнать ngx_pid завершившегося дочернего
процесса.

В результате: мастер-процесс может самостоятельно
снять все "зависшие" блокировки на shared memory.
Дополнительные затраты ресурсов сервера при этом
практически равны 0.

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

Если удалять заблокированные элементы - разве не будут segfault'ы?

--
Best regards,
Gena

_______________________________________________
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: 228
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