我基本上是通过带有 mocha 的请求模块检查所有路线。
https://www.npmjs.com/package/request
我正在做压力测试,通过并排打开两个控制台窗口并同时运行它们。大多数时候测试都是成功的,但是当测试失败而没有超时错误时,就会有一个瞬间,并且从邮递员那里我有这个停止响应的特定路线。
它大约发生 7 次,我想知道我能做些什么来解决这个问题。
编辑: 增加到 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 连接回调。附上截图并注意到一些连接限制,是因为这个吗?我正在使用连接池。
日志说强制关闭线程。
可能的答案:
这个线程帮助解决了这个问题。 https://github.com/felixge/node-mysql/issues/405
我设置waitForConnections: false
然后开始看到错误->
[Error: No connections available.]
所以在我看来,系统正在等待连接,但测试运行器没有等待并最终出现超时错误。
似乎对最大连接数也有一些限制,尽管我在每次查询后都调用了连接释放,但不确定这在生产系统上是如何工作的?我们有限制吗?