两个不同的 Web 服务器上的 Linux 内核和 apache 2.2 性能问题

两个不同的 Web 服务器上的 Linux 内核和 apache 2.2 性能问题

我在负载均衡器后面有 2 个带有 mod_php 的 apache web 服务器,操作系统是 CentOS 6.x。它们应该是相同的。它们应该使用循环接收大致相同的请求。其中一个的表现比另一个差很多。

我认为它由于某种原因收到了更多请求:

  1. 事实并非如此。
  2. 这些请求的 URL 和数量大致相同,时间也大致相同。但性能却最差。
  3. 好吧,我决定在找到解决方案的同时帮助服务器。所以我重新配置了负载平衡器。
  4. 我对负载均衡器的配置更改是将请求发送到打开连接较少的服务器。此后,该服务器开始收到比第二台服务器更少的请求,并且与另一台服务器相比,性能仍然很差。为了强调差异,此时请求分布约为 ~35% 到 ~65%。一般来说,URL 请求比率大致相同。
  5. 现在,我以为两台服务器之间存在一些其他用户软件级别差异。但事实并非如此。
  6. 我们自动管理配置和代码。PHP 加载了相同的模块,Apache 也是如此。代码之间没有区别。
  7. 硬件是一样的。
  8. 作为补充信息,我们没有粘性会话。请求会随机定向到两个服务器。我们也对此进行了测试。配置更改后的不同之处在于,有问题的服务器收到的请求少了很多。
  9. 服务器在处理请求或连接到其他组件(如 DB)时没有任何有意义的时间差异。

鉴于此背景,请检查当前的 CPU 映像。出现问题的服务器: web1 图像 CPU 性能 请注意,红色表示系统 CPU 时间而不是用户,apache 是用户空间。还请注意,这些图像是在进行更改以减少对 web1(有问题)的请求之后拍摄的。之前我们有严重的 CPU 和平均负载问题,然后这是另一台服务器。Web2 图像 CPU 性能。未检测到 IO、RAM 或其他硬件问题。

这让我怀疑内核问题。top似乎说的是同样的事情。Web1 与 Web2 图像性能对比

然后我注意到内核由于某种原因加载了不同的模块。lsmod Web1 与 Web2 图像

因为我找不到任何其他区别。实际上,我有足够的信息,因为服务器应该是相同的。BOSS 希望我在删除内核模块之前能够将此与实际问题联系起来。我尝试了一些东西,包括 perf,但没有成功。Perf( perf record -F 99 -a -g -- sleep 30) 产生了这样的结果,但我真的不明白如何使用它或它如何帮助我定义结果。在此处输入图片描述左边是 web1,右边是 web2。如果你看到它列出了占用 CPU 时间/百分比的调用,但我真的不知道它们是什么。

您是否同意这可能与内核模块有关?为什么是或不是?

有人能告诉我如何获取模块使用情况以及每个模块的 CPU 使用时间/百分比等统计数据吗?

还有什么我没有想到的事情吗?

相关内容