5

我无法弄清楚这个网站出现瓶颈的原因是什么,一旦达到大约 400 个用户,响应时间就会非常糟糕。该站点位于 Google 计算引擎上,使用实例组,具有网络负载平衡。我们用sailjs 创建了这个项目。
我一直在使用 kubernetes 对 Google 容器引擎进行负载测试,运行 locust.py 脚本。

其中一项测试的主要结果是:

RPS : 30
Spawn rate: 5 p/s
TOTALS USERS: 1000
AVG(res time): 27500!! (27,5 seconds)

最初的响应时间很好,不到一秒,但是当它开始达到大约 400 个用户时,响应时间开始大幅增加。

我已经测试了可能影响响应时间的明显因素,结果如下:

计算引擎实例(2 个标准 n2,200gb 磁盘,内存:每个实例 7.5gb):

Only about 20% cpu utilization used
Outgoing network bytes: 340k bytes/sec
Incoming network bytes: 190k bytes/sec
Disk operations: 1 op/sec
Memory: below 10%

MySQL:

Max_used_connections : 41 (below total possible)
Connection errors: 0

MySQL 的所有其他结果似乎也很好,没有理由造成瓶颈。

我为一个新的sailjs创建的项目尝试了相同的测试,它做得更好,但仍然有糟糕的结果,大约2000个用户的5秒恢复时间。

我还应该测试什么?瓶颈可能是什么?

4

1 回答 1

4

你在做任何文件读/写吗?这是 node.js 中的一个主要障碍,并且总是会导致一些问题。应尽可能缓存读取文件或消除对此类代码的需求。根据我自己的经验,当并发请求数量增加时,通过我的节点服务器提供图像、css、js 等文件会开始造成问题。解决方案是通过 CDN 为所有这些提供服务。

另一个问题可能是 mysql 驱动程序。我们遇到了一些连接没有正确关闭的问题(没有使用sails.js,但我认为他们在我遇到这个问题时使用了相同的驱动程序),因此它们会导致mysql服务器出现问题,导致获取数据时出现长时间延迟从数据库。您应该计时/跟踪 mysql 查询的数量并确保它们没有延迟。

最后,这可能是sails.js 和谷歌计算引擎的一些特殊问题。您应该确保对于您遇到的同一问题,其中任何一个都没有任何未解决的问题。

于 2016-03-07T14:38:59.373 回答