Tôi kết nối với các trang web khác trong ứng dụng node.js của mình bằng mô-đun yêu cầu theo cách rất chuẩn:Ứng dụng Node.js bắt đầu tính thời gian (ETIMEDOUT) khi HTTP kết nối với các trang web khác sau khi đã chạy một thời gian
Network.prototype.httpRequest = function(url, method, params, headers, callback)
{
var qs = typeof params === 'string' ? params : querystring.stringify(params || {}),
config = {
'method': (method || 'get').toUpperCase(),
'url': url,
'timeout': this.app.api.settings.http.timeout_outbound
};
if(config.method === 'GET')
{
config.url += '?' + qs;
}
else
{
config.body = qs;
}
request(config, callback);
};
Sau một vài giờ ứng dụng của tôi đang hoạt động, chức năng này bắt đầu định thời gian - và không chỉ cho một trang web. Nó bắt đầu không kết nối (ETIMEDOUT
) một cách ngẫu nhiên, mà không có bất kỳ mô hình rõ ràng nào.
Dự đoán đầu tiên, rõ ràng của tôi là có điều gì đó phải chặn/can thiệp vào kết nối mạng. Có rất nhiều "bộ phận chuyển động" khác trong ứng dụng của tôi (ví dụ, kết nối với Mongo qua Mongoose, kết nối với ElasticSearch thông qua Elastical, vv), vì vậy có thể hiểu rằng một trong số đó là nguyên nhân ... nhưng rõ ràng là không thực sự là một tùy chọn ngồi xung quanh chọn lọc vô hiệu hóa các mô-đun khác và chờ 6 giờ để xem sự cố có biến mất hay không ...
Tôi đang giám sát lưu lượng mạng (qua iStatMenus pro trên OSX, FWIW) và không thấy bất kỳ điều gì bất thường/lưu lượng truy cập liên tục đến từ nút.
Có cách nào khác để nghiên cứu kỹ những gì có thể đang chặn/can thiệp vào lưu lượng truy cập của tôi không?
bạn đã giải quyết vấn đề đó chưa? Tôi có cùng một vấn đề ... – hereandnow78
Tôi cũng quan tâm đến giải pháp ... – rshmelev
Tôi cũng có cùng một vấn đề. Bạn có thể cho chúng tôi biết giải pháp nào đã sửa cho bạn? –