К содержанию
Nika CRM

Блог · 2026-08

Меньше 499 на Зарплате

5 августа 2026: AbortController для запросов ЗП, больше слотов gunicorn на WORK, request_time в nginx-логе для диагностики 499.

5 августа 2026: в access-логе часто мелькало 499 на /salary и /salary/employee/... — браузер обрывал запрос, не дождавшись ответа (уход со страницы или смена фильтра), пока gunicorn ещё считал.

Почему так

  • Promise.race на 30 с не отменял fetch — «зомби»-запросы продолжали занимать threads.
  • При смене периода/фильтра стартовал новый запрос поверх старого.
  • Socket.IO и staff-chat делят те же gunicorn gthread-слоты (было 3×4).

499 ≠ таймаут nginx (тот даёт 504). Расчёт ЗП на сервере при свободных слотах ~0.2 с.

Что сделали

  • AbortController на списке сотрудников, extras и карточке сотрудника; abort при новом запросе и на pagehide.
  • Gunicorn: --max-requests / jitter (recycle воркеров); на WORK рекомендуем 4×6 threads.
  • В nginx access-лог: rt= / urt= (request_time / upstream_response_time) — видно быстрый abort vs долгое ожидание.

Что проверить

  1. /salary — смена периода отменяет предыдущий Network-запрос (aborted).
  2. Быстрый уход со страницы — нет «хвоста» extras.
  3. Карточка сотрудника — смена периода без наложения ответов.

← Все записи блога · Документация