在 Windows 10 中,在哪里设置 NodeJS 的最大连接数(用于使用express'get
)?与linux中的最大文件(描述符)设置有关吗?有该设置的 Windows 版本吗?最好是在nodejs中进行设置,以便迁移到unix时兼容?
我怀疑当超过 2000 个并发连接攻击我的服务器程序时,由于此设置,负载测试模块会出现错误,该服务器程序使用 Express 并将连接保留在队列中以供稍后处理。对于 200 个并发连接(命令行中的 -c 200),负载测试正常完成。另外,当我不在队列中保留连接并且如果 get
中的操作很简单("response.end('hello world')"
)时,它不会给出 -c 2000 的错误,也许它在其他启动之前完成工作,所以它实际上不是 2000 个并发,只有排队版本有 2000 个并发?
我没有使用http模块,但我正在服务器端express模块
的get
函数上处理从客户端发送的xlmhttprequest。
也许桌面版 Windows 操作系统在开发时并未考虑到服务器应用程序,因此它没有最大连接数、最大文件访问数的设置,并且相关变量已硬编码在其中?
最佳答案
要回答您问题的一部分,对于最大打开文件,有_setmaxstdio
,请参阅:
也许您可以编写一个包装器来更改此设置并启动您的 Node 程序。
至于最大打开连接数的一般问题,这是我在一些较旧的 Windows 上发现的:
它讨论了更改以下配置:
[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]
TcpNumConnections = 0x00fffffe(默认 = 16,777,214)
[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]
最大用户端口 = 5000(默认 = 5000,最大 = 65534)
另请参阅上述链接中的其他相关参数。我不知道配置值的名称在较新版本的 Windows 中是否发生了变化,但如果增加打开文件限制还不够,我会搜索 HKEY_LOCAL_MACHINE System CurrentControlSet Services TcpipParameters
。
为了进行比较,here is how I increase the number of concurrent Node/Express connection in Linux .
关于node.js - NodeJS Express Windows 最大连接数设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40832376/