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