gpt4 book ai didi

php - Apache 使用过多的 CPU

转载 作者:IT老高 更新时间:2023-10-29 00:20:40 26 4
gpt4 key购买 nike

我们运营着一个中型网站,每天的浏览量达几十万次。直到上周末,我们在虚拟机上的运行负载通常低于 0.2。操作系统为 Ubuntu。

在部署最新版本的应用程序时,我们还在部署之前进行了 apt-get dist-upgrade。部署后,我们注意到 CPU 上的负载急剧上升(有时达到 10 并停止响应页面请求)。

我们尝试从 PHP 中导出整整一分钟的 Xdebug 分析数据,但仔细查看它只发现了一些速度较慢的部分,但无法解释这种巨大的跳跃。

我们现在非常确定我们网站的新版本中没有任何内容会触发该问题,但我们无法确定。我们已经回滚了很多更改,但问题仍然存在。

在查看进程时,我们发现单个 Apache 进程在比绝对必要的时间更长的时间内使用了相当多的 CPU。然而,当在受影响的进程上使用 strace 时,除了

accept(3,

它在接收到新连接之前会挂起一段时间,所以我们实际上看不到导致问题的原因。

堆栈是 PHP 5、Apache 2(prefork)、MySQL 5.1。大多数事情都通过 Memcached 运行。我们已经尝试过 APC 和 eAccelerator。

那么,我们的下一步应该是什么?是否有任何我们忽略/不知道的分析方法?

最佳答案

答案最终与 Apache 无关。如前所述,我们在虚拟机上。我们的用户 session 非常大(想想每个活跃用户 500kB),所以我们有很多磁盘 IO。磁盘快满了,这意味着 Ubuntu 花了很多时间来移动东西(或者我们认为)。没有简单的方法来扩展磁盘(因为它没有为 VMWare 正确设置)。这完全扼杀了性能,Apache 和 MySQL 偶尔会使用 100% CPU(在很短的时间内),并且系统更新 CPU 使用率表的速度非常慢,以至于它似乎卡在了那里。

我们最终设置了一个新的虚拟机(这也让我们有机会彻底记录服务器上的所有内容)。在新 VM 上,我们分配了大量磁盘空间,并将 session 移到内存中(使用 memcached)。我们的负载在非高峰使用时下降到 0.2,在接近高峰使用时下降到大约 1(在 2-CPU VM 上)。将 session 移到 memcached 会占用大量磁盘 IO(我们经常使用大约 2MB/s 的磁盘 IO,这非常糟糕)。

结论;有时你只需要重新开始...... :)

关于php - Apache 使用过多的 CPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/173757/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com