Як ваші вихідні, відпочили чи як завжди - тільки розігнався і вже понеділок? 😅
Ранкові історії QA
Давно не було історій, правда?
Так от, сьогодні поговоримо, як NGINX може поламати мозок навіть у понеділок зранку.
Короче, приходжу після вихідних - кавуся третя), ноут, Jenkins каже “pipeline passed”, життя прекрасне.
Думаю: перевірю тест, який залишив на вихідних.
Захожу в акаунт - і бац, історія пуста.
Немає логів, немає даних, ЮА мовчить як риба.
Окей, відкриваю DevTools → бачу REST 504 Gateway Timeout.
О, ну точно або бекенд лежить, або NGINX десь чудить.
Захожу на сервер, думаю треба подивитися логі, куди ж без них)
journalctl -u nginx.service -n 50
Ну і так і там класика жанру
connect() failed (111: Connection refused)
Думаю, цікаво, чому “refused”, якщо сервіс наче має піднятись автоматом.
Йдемо далі:
sudo systemctl status nginx
і що я там бачу - активний, але тільки стартує.
Тобто NGINX ще навіть не піднявся повністю, а клієнт уже шле запит)
Ну окай думаю давай чучуть по глибще копнемо
dmesg | grep nginx
і тут все стало ясно: система запускає API ще до того, як NGINX підняв сокети.
В результаті - запит іде в нікуди, бо сервіс “в комі”.
Іншими словами гонка сервісів це біда( а це дуже і дуже чата проблема(
NGINX ще тільки каже “я в процесі запуску”, а REST уже біжить у продакшн)
Ну шо бага є)
щоб REST стартував тільки після того, як вебсервер реально живий.
Що я маю вам сказать з цього приводу)
Коли бачите “504 Gateway Timeout” - не спішіть тикати у девів)
Перевірте логи, сервіси, залежності запуску.
Бо іноді не баг, а просто NGINX ще не встиг випити кави)
Всім гарного тижня і спокійних деплоїв)
Хто ловив такі “післяребутні” приколи - діліться в коментарях, бо впевнений, я не один такий)
Обняв ☀️🤗🤗🤗
Сильні💛