我正在开发一个大型应用程序,我必须对它进行加载测试。它是一个基于EC2的集群,其中包含一个用于应用程序的HighCPU Ex.Large实例,用于运行PHP / NGinx。
此应用程序负责从包含大约5k - 10k键值的redis服务器读取数据,然后进行响应并将数据记录到mongoDB服务器并回复到客户端。
每当我向应用服务器发送请求时,它都会在20-25 ms内完成所有的计算,这是非常棒的。
我现在正在尝试做一些负载测试,我运行了一个基于php的应用程序,在我的笔记本电脑上发送请求到服务器。他们中的数千人在20-30秒内很快。在此加载期间,每当我在浏览器中打开应用程序URL时,它的响应时间大约为25-35 ms,这也很酷。所以我相信红芒果和芒果不会造成瓶颈。但是在加载过程中需要大约25秒的时间才能恢复响应。
高CPU前。大型实例有8 GB RAM和8核。
此外,在负载测试期间,顶层命令显示大约4-6个php_cgi进程消耗了大约15-20%的CPU。
我在nginx上有50个工作进程,1024个工作程序连接。
造成瓶颈的问题是什么?
如果这不可行,我会认真考虑使用嵌入式and服务器和嵌入式缓存的整个java应用程序。
更新-将PHP_FCGI_CHILDREN增加到8,并将负载期间的响应时间减半。
发布于 2011-12-30 14:18:30
50个工作进程太多了,每个CPU核心只需要一个工作进程。使用更多的工作进程将调用进程间切换,这将花费很多时间。
现在可以做的事情: 1.将工作进程设置为最小(每个CPU有一个工作进程,例如,如果有4个cpu单元,则设置4个工作进程),但是工人连接-最大(例如10240)。
。
我希望这对你有帮助。
https://stackoverflow.com/questions/8680119
复制相似问题