На моем сервере node.js я не могу понять, почему в нем заканчивается память. Мой сервер node.js делает удаленный HTTP-запрос для каждого получаемого http-запроса, поэтому я попытался реплицировать проблему с помощью приведенного ниже примера script, который также исчерпал память.
Это происходит только в том случае, если итерации в цикле for очень высоки.
С моей точки зрения, проблема связана с тем, что node.js ставит в очередь удаленные HTTP-запросы. Как этого избежать?
Это пример script:
(function() {
var http, i, mypost, post_data;
http = require('http');
post_data = 'signature=XXX%7CPSFA%7Cxxxxx_value%7CMyclass%7CMysubclass%7CMxxxxx&schedule=schedule_name_6569&company=XXXX';
mypost = function(post_data, cb) {
var post_options, req;
post_options = {
host: 'myhost.com',
port: 8000,
path: '/set_xxxx',
method: 'POST',
headers: {
'Content-Length': post_data.length
}
};
req = http.request(post_options, function(res) {
var res_data;
res.setEncoding('utf-8');
res_data = '';
res.on('data', function(chunk) {
return res_data += chunk;
});
return res.on('end', function() {
return cb();
});
});
req.on('error', function(e) {
return console.debug('TM problem with request: ' + e.message);
});
req.write(post_data);
return req.end;
};
for (i = 1; i <= 1000000; i++) {
mypost(post_data, function() {});
}
}).call(this);
$ node -v
v0.4.9
$ node sample.js
FATAL ERROR: CALL_AND_RETRY_2 Allocation failed - process out of memory
Tks заранее
gulden PT