Кто-нибудь знает, почему эта ошибка возникает снова и снова через несколько минут

Я использую пакет nodemon npm для автоматического перезапуска приложения узла при обнаружении изменений файлов в каталоге. Сервер создается с использованием пакета express и http npm. Проблема в том, что когда сервер простаивает в течение нескольких минут, он выдает ошибку Ошибка: прочтите ECONNRESET Фактическая ошибка выглядит следующим образом:

events.js:167
      throw er; // Unhandled 'error' event
      ^
Error: read ECONNRESET
    at TCP.onStreamRead (internal/stream_base_commons.js:111:27)
Emitted 'error' event at:
    at Connection._handleProtocolError (/home/abc/node_modules/mysql/lib/Connection.js:425:8)
    at Protocol.emit (events.js:182:13)
    at Protocol._delegateError (/home/abc/node_modules/mysql/lib/protocol/Protocol.js:390:10)
    at Protocol.handleNetworkError (/home/abc/node_modules/mysql/lib/protocol/Protocol.js:363:10)
    at Connection._handleNetworkError (/home/abc/node_modules/mysql/lib/Connection.js:420:18)
    at Socket.emit (events.js:182:13)
    at emitErrorNT (internal/streams/destroy.js:82:8)
    at emitErrorAndCloseNT (internal/streams/destroy.js:50:3)
    at process._tickCallback (internal/process/next_tick.js:63:19)

Я попытался отловить ошибку, но это не решило мою проблему.

process.on('uncaughtException', function(err) {  
   console.info("uncaughtException called: \n", err);
})

Сервер создается с использованием экспресс и http:

express = require('express');
app = express();
http = require('http');
var httpServer = http.createServer(app);
httpServer.listen(3000, function(req, res) {
    console.info('Server running at port 3000);
});

Я ожидаю предотвратить появление ошибки ECONNRESET на сервере Какое решение?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
1 214
1

Ответы 1

Мы можем видеть, что это проблема mysql на основе выданной ошибки:

Emitted 'error' event at:
at Connection._handleProtocolError (/home/abc/node_modules/mysql/lib/Connection.js:425:8)

У меня возникла та же проблема, и способ, которым я ее исправил, заключался в том, что после подключения к базе данных я добавил setInterval каждые 20 минут, выполняя простой запрос, такой как db.query ('SELECT 1;'). Предположительно mysql закрывает соединение после некоторого времени простоя, поэтому на основе этого Почта

«Разработчики модуля рекомендовали использовать контрольный сигнал для поддержания соединения, например, вызывать SELECT 1; с интервалом».

Это быстрое исправление, и оно сработало для меня, но если вы хотите выяснить другой способ, я рекомендую прочитать сообщение выше, поскольку есть другие решения для него.

Другие вопросы по теме