Node JS сервер закрывает соединение - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть веб-сайт, который обменивает предметы игрока из сервиса Steam на другие предметы из того же сервиса. Я запустил 4 узла JS сервер, под разными таблицами Redis. Проблема в следующем: 1 из серверов закрывает соединение примерно каждые 6-8 часов, в логах записывается ошибка:

error: [Classic] Error SteamCommunity Polling: Error: Fail
0|classic  | db error { Error: Connection lost: The server closed the connection.
0|classic  |     at Protocol.end (/etc/opt/bot/node_modules/mysql/lib/protocol/Protocol.js:109:13)
0|classic  |     at Socket.<anonymous> (/etc/opt/bot/node_modules/mysql/lib/Connection.js:115:28)
0|classic  |     at Socket.emit (events.js:203:15)
0|classic  |     at endReadableNT (_stream_readable.js:1145:12)
0|classic  |     at process._tickCallback (internal/process/next_tick.js:63:19) fatal: true, code: 'PROTOCOL_CONNECTION_LOST' }
0|classic  | (node:9600) [DEP0096] DeprecationWarning: timers.unenroll() is deprecated. Please use clearTimeout instead.

Насколько я понимаю, проблема в том, что базы данных нет запросы и, следовательно, сервер выключается.

И другие Node JS серверы работают, но у них есть другая проблема. Время безотказной работы сервера теперь составляет 40 часов, и когда я посылаю запрос боту на обмен предметов, ничего не происходит. Он не видит запрос об обмене товаров в сервисе Steam, ничего, он не онлайн в сервисе Steam, хотя он должен быть онлайн.

Но как только я перезагружаю сервер, бот начинает работать, все видит и принимает обмены. В чем может быть проблема? Подозреваю, что все таки из-за того, что серверы долго простаивают и зависают.

Как решить проблему? Может быть, это нужно сделать, например, чтобы каждые 30 минут сервер в базе данных вводил какие-то случайные данные, или чтобы он переключался на Steam?

...