Эта ошибка возникает всякий раз, когда процесс узла делает http-запрос для получения информации о пользователе из веб-API.
Сценарий таков:
Я запускаю TCP-сервер, используя узел, и когда он получает запрос «входа в систему» от клиента, он отправляет запрос http GET другому веб-API для получения пользователяинформация.
При увеличении количества пользователей процесс узла начинает выдавать ошибку "ETIMEOUT" при получении информации о пользователе.И однажды, если произошла ошибка, все запросы после этого выдают одну и ту же ошибку.
Я пытался выполнить тот же запрос с помощью wget , но все в порядке, поэтому я думаю, что, возможно, это непроблема с сетью.
И, как ни странно, после увеличения лимита открытых файлов до 10,0000 с помощью ulimit -n все идет хорошо до приращения пользователя следующего уровня.
здесь функция fetch:
fetchUserInfo = function(callback) {
var http = require('http');
var opt = {
agent: false,
host: 'www.someapi.net',
port: 80,
path: '/userInfo.php'
}
var body = '';
var req = http.request(opt, function(res) {
res.setEncoding('utf8');
res.on('data', function(chunk){
body += chunk;
});
res.on('end', function() {
if(callback) {
callback(body);
}
});
});
req.on('error', function(e) {
sys.log("User info fetch error: " + e.message);
if(callback) {
callback();
}
});
req.end();
}
Моя среда - Debian GNU / Linux 6.0 с узлом v0.4.10.
Есть какие-нибудь идеи?Спасибо в адвенсе.