Hello! On Fri, May 07, 2021 at 10:40:52PM +0300, Gena Makhomed wrote:
> On 07.05.2021 21:19, Maxim Dounin wrote: > > >> [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 > > [...] > > >> Конфиг бекенда, на котором была эта ошибка, примерно такой: > >> > >> aio threads; > >> aio_write on; > > > > Скорее всего в данном случае дело в aio_write, см. > > https://trac.nginx.org/nginx/ticket/2162. > > Понятно, спасибо! > > Максим, Вы говорите в комментариях к этому тикету: > > > It is not expected to affect real-world use cases, > > though probably worth fixing anyway. > > У меня этот bug проявился именно что в real-world use case. Ну видимо сильно зависит от use case'а. Такое может быть, когда кроме aio-записи в кэш ничего больше в рабочем процессе не остаётся, тогда shutdown может случиться раньше, чем надо. В норме такого не бывает, т.к. shutdown задерживают медленные клиенты. > > If the worker process exits prematurely while a requests updates > > the cache with proxy_cache_use_stale updating;, the cache item > > is stuck in the UPDATING state and won't be updated till the cache > > is reloaded (for example, due to nginx restart or binary upgrade). > > > As already explained in comment:2, this is not expected to happen > > in real-world use cases. If you want to be completely safe from > > the particular issue, avoid using aio, > > most notably avoid aio_write on;. > > Другими словами aio и aio_write пока что еще не production ready. > Неожиданно, что этот момент не отображен в документации к nginx. Тут зависит от того, с чем сравнивать. Если, скажем, с пригодностью протокола HTTP/2 к production-использованию в современном интернете - то и aio, и даже aio_write существенно более production ready. Но вообще сама по себе функциональность aio_write - достаточно новая и достаточно сложная, и предназначена в первую очередь для очень специфических конфигураций, где по другому никак. Если её включать просто так для всего, да ещё и комбинировать с механизмами, крайне чувствительными к любым отклонениям - можно найти себе приключений. Как, впрочем, и много где ещё. Патчи, что называется, welcome. Тем более, что основной вопрос там - как это красиво исправить, по возможности вписав в существующую инфраструктуру, не изобретая новых механизмов для задержки shutdown'а. -- Maxim Dounin http://mdounin.ru/ _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru