повторить.
Если кратко, то есть приложение на nodejs которое висит себе на 8080 порту, и обслуживает клиентов по socket.io или просто http.
Ну в общем, время от времени так случается, что после какого-то момента, приложение просто отказывается отвечать на все абсолютно http запросы.
Я логирую что пришёл запрос и вижу его, но ответа нет и соотвественно всё вылетает по таймауту.
Причём в БД нет никаких блокировок, я проверял. Ну и соответсвенно, по вебсокетам такая же херня. Что-то приходит, но ничего не уходит обратно.
Вопросы:
1. Вот как можно поймать эту ситуацию? Мне кажется что блокирую eventloop, но не знаю как проверить это.
2. Есть ли что-то что помогло бы определить проблему, если допустим, баг уже произошёл ? чтобы залезть внутрь эвентлупа и посмотреть что там прозошло ?
1 — волшебный tcpdump, если трафика вменяемое количество. 2 — дебаггер, плюс process._getActiveRequests() / process._getActiveHandles() (не для продакшна, они с подчёркиванием не просто так, никто не гарантирует присутствие/совместимость этих функций в будущем).
Обсуждают сегодня