使用Google Compute Engine加载nodejs上的testing瓶颈

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

其中一项testing的主要结果是:

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

响应时间最初是很好的,低于一秒,但是当它开始达到大约400个用户时,响应时间开始大量跳跃。

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

计算引擎实例(2 x standard-n2,200 GB磁盘,RAM:每个实例7.5 GB):

 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创build项目的同样的testing,它做得更好,但仍然有可怕的结果,大约2000用户5秒钟的时间。

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

你正在做任何文件读/写? 这是node.js中的一个主要障碍,并且总会引起一些问题。 caching读取文件或删除这些代码的需要应该尽可能地完成。 根据我自己的经验,当服务器的并发请求数量增加时,像图片,css,js这样的服务器文件将会开始引起麻烦。 解决scheme是通过CDN为所有这些服务。

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

最后,这可能是sails.js和Google计算引擎的一些特殊问题。 你应该确保没有任何关于你正在经历的同样的问题的任何公开的问题。

Interesting Posts