@snake-yava

Как сделать так чтобы сервер на node.js не зависал?

После длительного не использования, сервер на node.js зависает. При переходе по ссылке просто идёт долга загрузка в браузере, но ничего не происходит.
Как отловить в чём проблема. Есть предположение, что БД после долго не использования закрывает соединение. Соединение с БД создаётся только один раз при инициализации сервера. Возможно в этом проблема.
Может быть какой-нибудь wait_time в настройках postgres увеличить?
В ноде используется ORM: https://www.npmjs.com/package/orm
  • Вопрос задан
  • 1185 просмотров
Решения вопроса 1
MarcusAurelius
@MarcusAurelius Куратор тега Node.js
автор Impress Application Server для Node.js
Ну тут могут быть разные причины:
1. Проверьте, не утекает ли память, потому, что процессы часто виснут без всяких сообщений от утечек
2. Замените библиотеку cluster на child_process, у cluster большие проблемы с надежностью, виснет
3. Перейти на нормальные дрова к постгресу: https://www.npmjs.com/package/pg
4. Использовать пул соединений https://www.npmjs.com/package/pg#client-pooling
5. Рассмотреть возможность перекладывания базы в память при старте и отдачи из памяти, если база не большая
6. Не использовать принцип middleware и фреймворки на его основе типа connect, express, koa
7. Проанализировать код на callback цепочки, может оказаться, что в каких-то ветках нет возврата
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Есть предположение, что БД после долго не использования закрывает соединение.

Не нужно ничего предполагать, а нужно дебажить. Банально логи посмотрите.
Если проблема именно в закрытии соединения, то все просто: во время запроса определяем, что соединение закрыто или если не получается определить, то можно банально отловить ошибку и создать новое соединение).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы