Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js NodeJS负载测试性能差(EADDRNOTAVAIL)_Node.js_Http_Express - Fatal编程技术网

Node.js NodeJS负载测试性能差(EADDRNOTAVAIL)

Node.js NodeJS负载测试性能差(EADDRNOTAVAIL),node.js,http,express,Node.js,Http,Express,我从使用NodeJS的web应用程序开始,我的应用程序有一个问题我不知道如何解决 应用程序(我们使用expressjs)在我的本地机器上运行顺利,但是,当我们将其部署到我们的开发服务器进行负载测试时,我们会遇到如下错误 错误:连接EADDRNOTAVAIL 在errnoException(net.js:770:11) at connect(net.js:646:19) 在Socket.connect(net.js:711:9) 异步回调时(dns.js:68:16) 在Object.onans

我从使用NodeJS的web应用程序开始,我的应用程序有一个问题我不知道如何解决

应用程序(我们使用expressjs)在我的本地机器上运行顺利,但是,当我们将其部署到我们的开发服务器进行负载测试时,我们会遇到如下错误


错误:连接EADDRNOTAVAIL
在errnoException(net.js:770:11)
at connect(net.js:646:19)
在Socket.connect(net.js:711:9)
异步回调时(dns.js:68:16)
在Object.onanswer[作为oncomplete](dns.js:121:9)
获取XXXXXXX 500 21毫秒

我们的应用程序没有数据库,它处理RESTAPI后端。我们构建的每个页面都需要一个或多个对后端的调用。我知道我们必须使用缓存系统,但我们希望在没有它的情况下进行测试

我们的负载测试模拟用户导航。它从5个用户开始,每分钟添加一个用户。当我们有超过25个用户时,我们开始在日志中看到错误

起初,我认为这可能是一个关于太多开放连接的问题,但我们的系统管理员说情况并非如此

所以,如果有人能给我一个关于我应该去哪里看的提示,那就太好了


编辑:我们的开发机器有16个内核,我们正在使用集群模块运行我们的应用程序。对后端的调用由流行的Mikael请求模块处理。

正如robertklep所建议的,这是一个在打开太多传出连接时耗尽虚拟端口的问题。请听他的详细解释

当我像文章所说的那样增加端口时,我仍然遇到了问题。通过更多的谷歌搜索,我发现了垃圾收集器和节点网络对象的问题。手动处理垃圾收集器似乎是一个好主意(当您需要许多传出连接时)。
检查此项。

如果您确定这不是程序问题,您可以更改linux系统配置以解决此问题:

[xxx@xxx~]$vim/etc/sysctl.conf

net.ipv4.tcp_tw_重用=1

net.ipv4.tcp_tw_recycle=1


[xxx@xxx~]$sysctl-p

REST后端是否有问题?但是,如果不知道如何调用后端,很难说。这似乎不是后端问题,因为我们已经对它进行了测试(使用JUnit),并且没有问题。我们使用Mikael请求模块调用后端。我被
GET XXX 500
消息触发,但我猜这是由您自己的应用程序引起的:)请检查
EADDRNOTAVAIL
是否不是由端口耗尽引起的。