Как увеличить время ожидания сокета на стороне сервера с помощью Restify?
Я использую restify для реализации сервера node.js. В основном сервер выполняет трудоемкий процесс для каждого запроса HTTP POST, но каким-то образом сокет закрывается, и клиент получает сообщение об ошибке, подобное этому:
[Error: socket hang up] code: 'ECONNRESET'
В зависимости от типа ошибки сокет определенно закрыт на стороне сервера.
Есть ли опция, которую я могу установить в createServer
Метод Restify для решения этой проблемы?
Редактировать: длительный процесс использует Mongoose для запуска процесса MongoDB. Возможно также возможно, что зависание сокета вызвано соединением с MongoDB? Как увеличить время ожидания для мангуста? Я обнаружил, что зависание произошло ровно через 120 секунд, так что это может быть из-за некоторой конфигурации тайм-аута по умолчанию?
Заранее спасибо!
2 ответа
Вы можете использовать стандартную розетку на req
объекта, и вручную вызовите setTimeout, чтобы увеличить время, прежде чем узел повесит сокет. По умолчанию узел имеет 2-минутный таймер на всех сокетах для бездействия, поэтому вы получаете зависания ровно через 120 секунд (это не имеет никакого отношения к restify). В качестве примера увеличения этого, настройте обработчик для запуска перед вашей долгосрочной задачей, например:
server.use(function (req, res, next) {
// This will set the idle timer to 10 minutes
req.connection.setTimeout(600 * 1000);
res.connection.setTimeout(600 * 1000); //**Edited**
next();
});
Это швы не должны быть реализованы