Simple nodejs http proxy fails with "too many open files"
Well, ignore it. I have opened an issue https://github.com/joyent/node/issues/793
Trying to run http://www.catonmat.net/http-proxy-in-nodejs
var http = require('http');
http.createServer(function(request, response) {
var proxy = http.createClient(80, request.headers['host'])
var proxy_request = proxy.request(request.method, request.url, request.headers);
proxy_request.addListener('response', function (proxy_response) {
proxy_response.addListener('data', function(chunk) {
response.write(chunk, 'binary');
});
proxy_response.addListener('end', function() {
response.end();
});
response.writeHead(proxy_response.statusCode, proxy_response.headers);
});
request.addListener('data', function(chunk) {
proxy_request.write(chunk, 'binary');
});
request.addListener('end', function() {
proxy_request.end();
});
}).listen(8080);
Fails after a huge number of requests with:
net.js:695
self.fd = socket(self.type);
^
Error: EMFILE, Too many open files
at net.js:695:19
at dns.js:171:30
at IOWatcher.callback (dns.js:53:15)
node 0.4.2 on OSX 10.6
You may be hitting your (default) maximum value of opened files in your operating system (for Linux it's 1024), especially if your are doing huge number of requests. For example in Linux you can increase this resource limit with ulimit command:
ulimit -n 8192
Resurrecting an old post here but I wanted to add my own answer for Ubuntu (couldn't get the ulimit command working :s ):
$ sudo vim /etc/security/limits.conf
Add the following:
SOME_USER hard nofile SOME_NUMBER
SOME_USER soft nofile SOME_NUMBER
Replace SOME_USER with your user. Replace SOME_NUMBER with a number higher than the limit that is causing problems.
$ sudo vim /etc/pam.d/common-session
Add the following:
session required pam_limits.so
Reboot your machine and the problem should be fixed :).
链接地址: http://www.djcxy.com/p/46452.html上一篇: 节点异常处理