当我运行负载测试时,我的应用程序在相对较低的压力点下退出。为了测试,我使用这个npm包loadtest。Node + Express:导致应用程序退出的loadtest错误:接受ENFILE
我运行测试,每秒1000个请求,10个并发10秒。
loadtest http://localhost:3000/my/api -t 10 -c 10 --rps 1000
应用程序退出后大约两秒钟,并给出以下错误,这是不是很有用。
events.js:163
throw er; // Unhandled 'error' event
^
Error: accept ENFILE
at exports._errnoException (util.js:1050:11)
at TCP.onconnection (net.js:1462:24)
显然,这与打开文件的数量有关。我试过这个命令ulimit -n <number>
但它没有帮助。这是限制在9999(我不能把它设置在上面)。
该应用程序可以处理大约400rps的10个并发货币。
我的本地机器是Mac OS Sierra,CPU:1.6GHz,RAM:8GB。
提供有关代码将是一个开始,因为无论运行的机器有多好(或不好),代码中的问题都会导致任何应用程序在最小的负载下崩溃。 – peteb
你是如何得出9999的限制的? – robertklep
@peteb问题不在代码中。它使用10个并发数对测试进行了约400个测试。我只想知道是否有人可以澄清ENFILE错误。 –