gpt4 book ai didi

mysql - 在压力下测试时,nodejs 运行时停止响应

转载 作者:行者123 更新时间:2023-11-29 22:25:46 26 4
gpt4 key购买 nike

我基本上是通过 Mocha 请求模块检查所有路由。

https://www.npmjs.com/package/request

我正在进行压力测试,方法是并排打开两个控制台窗口并同时运行它们。大多数时候测试都是成功的,但是当测试失败而没有超时错误时,瞬间就会到来,并且从 postman 那里我得到了停止响应的特定路线。

这种情况大约七次发生一次,我想知道我能做些什么来解决这个问题。

编辑:增加到 4 个控制台窗口同时运行测试,它们运行良好几次,但随后开始超时。

甚至 app.get、app.post 等路由上都没有控制台输出。

有什么建议吗?

编辑

根据测试中的建议捕获了一些请求错误。

Uncaught AssertionError: { [Error: connect ECONNREFUSED]
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect' } == null

上述错误对应的代码为

request({url: endpoint + "/SignIn?emailAddress=" + emailAddress + "&password=" + password}, function (error, response, body) {

assert.equal(error, null);

编辑2进一步深入挖掘控制台语句,发现 mysql 连接回调没有被调用。附上屏幕截图并注意到一些连接限制,是因为这个吗?不过我正在使用连接池。

enter image description here

日志显示强制关闭线程。

enter image description here

可能的答案:

该帖子帮助解决了这个问题。 https://github.com/felixge/node-mysql/issues/405

我设置了waitForConnections: false,然后开始看到错误 ->

[Error: No connections available.]

所以在我看来系统正在等待连接,但测试运行程序没有等待并最终出现超时错误。

最大连接数似乎也有一些限制,尽管我在每次查询后调用连接释放,但不确定这在生产系统上如何工作?我们在那里有限制吗?

最佳答案

您的 TCP 连接数已用完。您需要在系统和应用程序级别进行一些更改,以使其处理更多负载。1. 尽可能将连接设置更改为 keepAlive。2. 在unix上,有ulimit,即任何进程在任何时刻可以保存的文件句柄的最大数量。请记住,在 UNIX 中,每个套接字也是一个文件。3. 根据数据库服务器或其他 Web 服务器的响应时间管理超时设置。如果您有多层架构,则必须在处理请求的每个级别上进行类似的更改。

关于mysql - 在压力下测试时,nodejs 运行时停止响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30283323/

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