我已阅读过有关 RHEL 6 和 RHEL 5 之间的性能差异的其他帖子,但似乎没有一个与我的相符。
我的问题表现为每个请求的平均响应时间略慢(20 毫秒)。我有大约 10/10 台硬件规格相同的服务器,分别运行 CentOS 6.1 和 CentOS 5.6。整个组都存在这个问题。
我正在使用 Passenger 运行 Ruby on Rails。
- Apache 配置相同(从同一个 SVN 仓库检出)
- Ruby 和 Passenger 是相同的版本。
- 应用程序相同并且正在被服务流量循环。
- mod_worker
来自服务器状态的一个有趣线索:CentOS 6.1 服务器在“读取请求”状态下有稳定的 20-40 个线程,而 CentOS 5.6 服务器有大约 1 个。我正在绘制这个图表,这样我可以看到它随时间的趋势。
我还有一堆运行 CentOS 6.1 的新机器,速度明显更快。它们的响应时间远超所有旧机器,但我可以看到它们也有 20-40 个稳定的线程处于“读取请求”状态。这让我相信,如果我能找出是什么阻碍了这些请求,我就能缩短它们的响应时间。
我的直觉告诉我,我需要调整 sysctl 中的一些网络设置,但我还没有弄清楚。
答案1
该领域的一个常见问题是,RHEL6 中的内存管理有所不同,多线程应用程序可能会受到影响。尝试在 MALLOC_ARENA_MAX=1 下运行 apache,看看是否有区别。
答案2
随机一拍 #1:您是否记录了主机名而不是 IP 地址?如果是,是否两者都记录?如果是,其中一个是否运行 nscd?
疯狂镜头 #2:LDAP 是否以任何方式参与其中?即 apache 或请求的任何其他组件是否以 ldap 用户身份运行?