Apache + php-fpm + mysql 在强大的服务器上运行速度太慢

Apache + php-fpm + mysql 在强大的服务器上运行速度太慢

我正在尝试使用 jmeter 测试加载我的团队开发并部署在 AWS ubuntu 14.04 上的 LAMP 应用程序。我们正在使用 AWS CDN 来提供静态文件,mysql 和 apache 位于同一主机上。

当只有一个用户执行操作时,响应时间是正常的,根据页面不同,在 2 到 5 秒之间。

我的目标是让它在同一时间对 500 个连接用户同时执行的操作做出响应。

我从较少的用户开始,在 t2.small(1vCPU,2 GB RAM)上使用 mod_php 和 prefork 模块,只有 40 个连接用户让我很满意。一旦有 100 个,它就会变得非常慢,响应时间 +20 秒。

在浏览了一些 SO 资源后,我尝试使用 php-fpm 和事件模块。性能有所提高,但速度仍然很慢;任何单个页面都需要 +15 秒。我决定将服务器升级到 M4.2xlarge(8vCPU、32 Gb RAM)。对于 100 个连接用户,它表现正常,我很满意,但这是一个昂贵的选择,我想使用最适合的服务器规格来获得更好的性能。

无论如何,我尝试用 330 个连接用户同时执行操作来测试这个 M4.2xlarge,结果它变得太慢了,每页 +15~+20 秒。一直试图调整事件配置和 fpm 进程,但没有成功(在大多数情况下,我的 CPU 为 +90℅,但使用的 RAM 不够,所以我认为某个地方存在限制)。

我感觉我已经很接近了,但我做不到。我会用您要求的任何文件、日志或输出来更新我的问题。

答案1

我认为您可以设置nginx缓存并将请求反向代理到 apache 和 Cloudfront。我以前这样做过。解决了我的延迟问题。

我的设置是:EC2 + RDS + Cloudfront/S3

我设置了我的 EC2,将nginx静态文件的请求缓存和代理到指向 S3 上的存储桶的 cloudfront。并将需要在服务器端运行的请求缓存和代理到 apache。并在 RDS 上设置我的数据库服务。

这解决了我的问题并将我的延迟减少到几毫秒。

相关内容