【问题标题】:PHP Settings [pm.max_children, pm.start_servers, pm.min_spare_servers and pm.max_spare_servers]PHP 设置 [pm.max_children、pm.start_servers、pm.min_spare_servers 和 pm.max_spare_servers]
【发布时间】:2014-03-25 08:39:00
【问题描述】:

在将网站从 GoDaddy 共享服务器传输到 EC2 实例的过程中。处理流量,在典型的一天的高峰时段,大约有 300 名活跃访客,至少可以说是有问题的。我的 CPU 使用率缓慢上升,最终达到 100%,使网站基本上无法使用。我一直在尝试解决我的错误日志中的问题,并想知道是否还有更重要的问题需要解决。

查看 Apache 错误日志后,我增加了 MaxClients [prefork (256) / worker (300) / serverlimit (256)] ==> (500 / 500 / 500)。

查看 PHP 错误日志后,我增加了 [pm.max_children (50) / pm.start_servers (5) / pm.min_spare_servers (5) / pm.max_spare_servers (35)] ==> (100, 10, 10 , 70)

即使有这些数字,我仍然会收到警告: [23-Feb-2014 04:34:47] 警告:[pool www] 似乎很忙(您可能需要增加 pm.start_servers 或 pm.min/max_spare_servers),产生 32 个孩子,有 7 个空闲,总共 83 个孩子们

人为增加这些数字似乎不是长期解决方案。有什么想法吗?

EC2:

RDS:

【问题讨论】:

  • 您对服务器有什么控制权?你使用 MySQL 吗?你检查过CPU负载吗?你能发布你的控制面板给你的性能统计数据吗?你检查过内存吗?您提供的信息越多,您就可以获得最佳答案。
  • 我可以完全控制服务器。我有一个用于 Web 服务器的 EC2 c1.medium 实例和一个 m1.medium MySQL 数据库服务器。我已经用我最近测试的性能屏幕截图更新了帖子。

标签: php performance error-handling amazon-ec2


【解决方案1】:
  • 如果您的站点不使用任何类型的缓存,请开始使用一种。有很多选择。
  • 负载是否来自用户?尽可能减少来自机器人的负载。建立规则以阻止 IP 或代理。
  • 如果可以,请使用 gzip。它会将一些额外的工作传递给 CPU,但会减轻 Apache 的负担。
  • 避免/阻止盗链。请记住,不要压缩图像或多媒体文件,只能压缩文本。
  • 尝试设置KeepAlive关闭。这将使用户产生更多的连接并增加 HTTP 流量和握手,但减轻连接打开的负担。您是唯一可以找到是否需要打开或关闭它的人。
  • 减少keepalivetimeout。你可能更喜欢这个而不是关闭KeepAlive
  • 尝试禁用尽可能多的模块。根据您对服务器的控制,这可能是不可能的。

除了一般性的事情(例如优化服务器端语言页面、优化数据库查询等)之外,没有更多细节我们无法透露更多信息。

根据您的图表更新

假设所有图表的比例相同。

当您的服务器达到 100% CPU 时,您有 0 次读取和 0 次写入,但您的网络使用率很高。交通要去哪里/去哪里?您可能认为这是在使用缓存,但令我惊讶的是,只有缓存可以容纳用户的全部访问权限。我的意思是,他们必须使用完全相同的文件/页面,而无需进行任何更改。这样做的问题不仅在于让所有用户访问相同资源的可能性有多大,还在于您拥有一些数据库访问权限。

如果数据库在同一台服务器上,则来自数据库的读/写量非常低,以至于它们甚至不会提高另一个图表上的标准。如果数据库在另一台服务器上,一个不影响另一个是正常的。

但是,数据库正在工作,即使几乎没有读/写,也在工作,并且负载正在增加,这表明查询存在问题。可能是复杂的视图,可能是非常低效的查询,可能是对某些查询的计算过多。队列深度似乎表明您在那里遇到了瓶颈。

我会说你有一些东西让数据库的工作变得非常困难,这是影响最大的东西。如果数据库在同一台服务器上。但这不是故事的全部。先检查一下。

【讨论】:

  • 感谢您的回复。我设置了两个不同的实例,一个作为 Web 服务器,另一个用于处理 MySQL 数据库。我已经安装了 WordPress,并且一直在使用 W3 Total Cache 插件来寻找最佳配置。目前我已经使用 APC 启用了页面、浏览器和对象缓存。我注意到 CPU 峰值发生在 0 次读取/写入时,但这可能是什么原因?该网站是一个基于图片的网站,在高峰时段可以有 300 多个活跃访问者。我已经分析了慢查询日志,但没有错误。
  • 您检查了查询吗?如果重新启动,服务器的行为如何?你可以重新启动服务器/服务器吗?尝试首先调试数据库,因为这似乎是问题所在。如果可以停用缓存,请在调试时进行。
猜你喜欢
  • 2013-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-13
  • 2018-12-03
  • 2012-04-04
相关资源
最近更新 更多