繁体   English   中英

PHP设置[pm.max_children,pm.start_servers,pm.min_spare_servers和pm.max_spare_servers]

[英]PHP Settings [pm.max_children, pm.start_servers, pm.min_spare_servers and pm.max_spare_servers]

在将网站从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: EC2

RDS: RDS

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

除了诸如优化服务器端语言页面,优化数据库查询等一般性内容外,我们无法提供更多细节。

根据您的图表进行更新

假设所有图形具有相同的比例。

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

如果数据库位于同一服务器上,则数据库的读/写操作非常低,以至于它们甚至都不会提高其他图形上的标尺。 如果数据库在另一台服务器上,则正常情况下,一个服务器不会影响另一个服务器。

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

我要说的是,有些事情使数据库的工作变得非常困难,而这正是影响最大的问题。 数据库是否在同一服务器上。 但这不是全部。 首先检查。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM