【发布时间】:2012-01-30 14:16:55
【问题描述】:
我正在开发一个大型应用程序,我必须对其进行负载测试。它是一个基于 EC2 的集群,具有一个用于运行 PHP / NGinx 的应用程序的 HighCPU Ex.Large 实例。
这个应用程序负责从 Redis 服务器读取数据,该服务器持有一些 5k - 10k 键值,然后它做出响应并将数据记录到 mongoDB 服务器并回复给客户端。
每当我向应用服务器发送请求时,它会在大约 20 - 25 毫秒内完成所有计算,这太棒了。
我现在正在尝试做一些负载测试,并在我的笔记本电脑上运行一个基于 php 的应用程序来向服务器发送请求。成千上万的人在 20 - 30 秒内快速完成。在此加载期间,每当我在浏览器中打开应用程序 URL 时,它都会以大约 25 - 35 毫秒的执行时间进行回复,这再次很酷。所以我确信redis和mongo不会造成瓶颈。但是在加载过程中需要大约 25 秒才能得到响应。
高 CPU 前。大型实例具有 8 GB RAM 和 8 个内核。
此外,在负载测试期间,top 命令显示大约 4 - 6 个 php_cgi 进程消耗大约 15 - 20% 的 CPU。
我在 nginx 上有 50 个工作进程和 1024 个工作连接。
导致瓶颈的问题可能是什么?
如果这不起作用,我正在认真考虑迁移到带有嵌入式 Web 服务器和嵌入式缓存的整个 Java 应用程序。
更新 - 将 PHP_FCGI_CHILDREN 增加到 8 并将加载期间的响应时间减半
【问题讨论】:
标签: php mongodb nginx amazon-ec2 redis