ignore long locked inactive cache entry
Maxim Dounin
mdounin на mdounin.ru
Пт Май 7 18:19:37 UTC 2021
Hello!
On Fri, May 07, 2021 at 06:25:18PM +0300, Gena Makhomed wrote:
> Здравствуйте, All!
>
> Использую nginx 1.19.10 из официального репозитория на сайте nginx.org,
> без сторонних модулей. При этом в логах наблюдаются такие строки:
>
> [alert] 2569378#2569378: *449013402 open socket #29 left in connection 3
> [alert] 2569378#2569378: *449013403 open socket #32 left in connection 8
> [alert] 2569378#2569378: aborting
>
> Насколько я понимаю - это означает что worker-процесс nginx аварийно
> завершил свою работу. Можно ли как-то настроить nginx или систему
> таким образом, чтобы в этот момент создавался дамп памяти процесса,
> чтобы можно было бы найти причину этого аварийного завершения работы?
В данном случае "aborting" означает, что следом за сообщением
стоит ngx_debug_point(), и если в настройках будет "debug_points
abort;", то случится abort с последующей записью дампа
(http://nginx.org/r/debug_points).
> Дальше в логе наблюдаются такие строки:
>
> [alert] 3459906#3459906: ignore long locked inactive cache entry
> de41775189dd3dbc95ae14cfa9fa5813, count:2
>
> Насколько я понимаю - это означает, что worker-процесс nginx аварийно
> завершил свою работу в момент обновления записи в cache, и эта запись
> осталась залоченной в памяти. Можно ли сделать так, чтобы в разделяемой
> памяти в качестве признака блокировки использовался бы PID процесса?
>
> Т.е. если 0 - то запись не заблокирована, если какое-то ненулевое
> значение - значит она заблокирована worker-процессом nginx с таким PID.
>
> И в случае обнаружения long locked inactive cache entry можно было бы
> проверить - существует ли в системе worker-процесс nginx с таким PID,
> и если нет - тогда просто разблокировать эту cache entry и продолжить
> нормальную работу.
>
> Альтернативный вариант - это сделать так, чтобы nginx не падал,
> но насколько я понимаю, программ без ошибок не бывает
> и они есть даже и в nginx в настоящий момент времени.
>
> Конфиг бекенда, на котором была эта ошибка, примерно такой:
>
> aio threads;
> aio_write on;
Скорее всего в данном случае дело в aio_write, см.
https://trac.nginx.org/nginx/ticket/2162.
[...]
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru