gpt4 book ai didi

node.js - Node + Express : loadtest causing the application to quit with Error: accept ENFILE

转载 作者:搜寻专家 更新时间:2023-11-01 00:21:21 30 4
gpt4 key购买 nike

当我对它运行负载测试时,我的应用程序在相对较低的压力点退出。为了测试,我使用这个 npm 包 loadtest .

我以每秒 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(我不能将其设置为高于该值)。

该应用程序可以在 10 个并发时处理大约 400rps。

我的本​​地机器是 Mac OS Sierra,CPU:1.6GHz,RAM:8GB。

最佳答案

macOS 对允许的打开文件描述符数量(总数和每个进程)设置了相当低的内核限制。我不得不检查我妻子的 Mac,默认的每个进程限制是 10240,这基本上是你使用 ulimit 的限制( ulimit 不能超出内核强加的限制)。

不过,运行 sysctl 命令很容易增加这些值:

sudo sysctl kern.maxfiles=122880 kern.maxfilesperproc=102400

(这些是我在我的 Mac 上使用的值,它们相当随意但对我来说没问题)

如果您希望它们在重启后保持不变,请将以下两行添加到文件 /etc/sysctl.conf(如果尚不存在,请创建它):

kern.maxfiles=122880
kern.maxfilesperproc=102400

关于node.js - Node + Express : loadtest causing the application to quit with Error: accept ENFILE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43414447/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com