home.social

#reload — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #reload, aggregated by home.social.

fetched live
  1. nginx -s reload может не применить конфиг

    Пока идёт бинарный апгрейд nginx, systemctl reload nginx не применяет конфиг так, как вы думаете: в лучшем случае к половине процессов сервера, в худшем — вообще никуда. Код возврата ноль в обоих случаях, в error.log пусто. Что именно у вас — решает одна строчка в юните: -s reload бьёт по pid-файлу, а он после USR2 принадлежит новому мастеру; kill -s HUP $MAINPID бьёт по старому, а тот конфиг вообще не перечитывает, и это описано в документации nginx — в разделе про обновление исполняемого файла, куда по другому поводу не заходят. Это первая из пяти проверок. Я взял пять ходовых утверждений про reload в nginx, померил каждое на стенде — и получил результаты по обе стороны: три подтвердились, два развалились. Развалившиеся оказались интереснее. Не работают ровно те страшилки, что про слушающий сокет: listen ... reuseport бесшовность не ломает (inode’ы сокетов до и после reload одни и те же — их держит мастер, а не воркер), паузы в accept при reload не существует вовсе (msleep(100) стоит ПЕРЕД QUIT), а значит и арифметика про переполнение backlog на reload — про нагрузку, а не про reload. Зато подтвердилось то, о чём почти не пишут. keepalive_min_timeout оставляет уходящего воркера в живых, и тот обслуживает запросы, которых в момент reload ещё не существовало — по старому конфигу. А ngx_close_idle_connections не различает направление соединения, поэтому каждый reload сбрасывает пул keepalive к бэкендам — и с 1.29.7 это касается всех, у кого есть блок upstream : пул там включён по умолчанию, 32 соединения на воркер. Правило из первой части — «соединение, открытое до reload, нового конфига не увидит» — приходится переформулировать: держится старого конфига не соединение, а процесс. В конце — Traefik, у которого reload’а нет вовсе, и который умеет не применить конфиг своим способом: кольцевой буфер на одно сообщение и двухсекундный дроссель. nginx release-1.31.3, traefik v3.7.10, все опыты в репозитории, запуск одной командой.

    habr.com/ru/articles/1068364/

    #nginx #reload #nginx_s_reload #systemd #бинарный_апгрейд #keepalive #upstream #reuseport #backlog #traefik

  2. nginx не умеет reload. Он умеет fork

    Деплой делает nginx -s reload . Команда возвращает ноль, nginx -T показывает новый конфиг, в error.log ровно одна строка — reconfiguring. А keep-alive соединение, открытое секундой раньше, в этот момент закрывается. Само по себе это не ошибка: сервер вправе закрыть простаивающий keep-alive когда угодно. Ошибку даёт гонка — FIN уходит в тот момент, когда клиент уже записал в сокет следующий запрос. Идемпотентный он повторит, POST — нет. Разбор по исходникам на фиксированных тегах: nginx release-1.31.3, httpd 2.4.68, traefik v3.7.10, плюс замер всех четырёх (с HAProxy) на одном стенде в одном прогоне. Выясняется, что мастер nginx конфиг не перечитывает вообще: он строит новый цикл целиком и форкает новых воркеров, а старым остаётся ровно то, что у них было. Apache приходит к тому же контракту через счётчик поколений, HAProxy — через замену процесса. А у одного из четырёх второй запрос в том же самом сокете возвращает уже новый конфиг — и причина не та, о которой вы подумали. Внутри: почему документация nginx сама создаёт половину недоразумения; почему WebSocket и SSE не попадают под ngx_close_idle_connections и держат старого воркера сколько угодно долго, а HTTP/2 попадает всегда и получает GOAWAY; как сигнал родителя у Apache доезжает до конкретного соединения через пять звеньев; и таблица из двенадцати клеток, в которой четыре реализации расходятся ровно в одной. Со стендом (один docker build, один docker run), полными выводами ps и тремя claims-*.tsv, где каждое утверждение о коде проверяется скриптом.

    habr.com/ru/articles/1067686/

    #nginx #traefik #apache_httpd #haproxy #reload #graceful_restart #keepalive #исходный_код #worker_process #обратный_прокси

  3. Ok, except the demo of Unforgiven II. That thing should not ~be~ seen the light of day. #Reload #Metallica

  4. Ok, except the demo of Unforgiven II. That thing should not ~be~ seen the light of day. #Reload #Metallica

  5. Guilty Gear X2 #Reload

    🏢 Arc System Works
    📅 2003
    🖥 Arcade, PS2, PSP, Windows, Xbox, Xbox 360

  6. Guilty Gear X2 #Reload

    🏢 Arc System Works
    📅 2003
    🖥 Arcade, PS2, PSP, Windows, Xbox, Xbox 360

  7. I had not #JasonNewsted unboxing #Reload remastered on the #Metallica channel 🤯 on my bingo card.

  8. I had not #JasonNewsted unboxing #Reload remastered on the #Metallica channel 🤯 on my bingo card.

  9. Metallica revisit 'Reload' with a massive remastered deluxe box set.
    Unreleased material, live recordings, and more arriving in June.
    Details: metalinsider.net/releases/meta
    #Metallica #Reload #HeavyMetal #Vinyl #MetalNews

  10. Growing up, the three R's were reading, 'riting, and 'rithmetic. Not any more.

    While #reading and #writing are incredibly useful, #arithmetic isn't quite as essential when I have a calculator in my pocket. #Mathematics, on the other hand, is necessary for lots of things, as #TomLehrer demonstrates: youtu.be/2VZbWJIndlQ?si=PiSJBw

    In this millennium, the three R's are #reload, #restart, and #reinstall. And, when you contact #support, they will walk you through them first.