我正在 CentOS 6.5 中运行一个网络服务器应用程序,有 200 个分支,每个分支最多 100,000 个客户端。通常情况下,流量为每分钟 200K 请求。我发现 CPU 负载高达 200%,然后在几分钟内恢复到 2% 左右的正常水平。大约每 30 分钟左右就会发生一次。
在 RHEL 5.8 中运行的同一应用程序没有此类问题。
我想知道 CentOS 与 RHEL 的性能是否存在重大差异。
我已经使用 valgrind 清理了任何内存泄漏的代码,但遇到了同样的问题。这些事情在我脑海中浮现 CentOS 在 fork 死后会承担创建 fork 的负载。 CentOS 内核不使用快速计时器。 CentOS 内存管理器的效率不如 RHEL。 我应该尝试 CentOS 6.3,要么它比新版本的 CentOS 6.5 更稳定。
最佳答案
很多天后,我们发现我们的代码中存在一个错误,导致 RHEL 中出现段错误,并且由于多进程应用程序之后诞生了新进程,并且 RHEL 有效地释放了该进程的内存,从而导致分段故障。
但是,当我们在 CentOS 中尝试相同的应用程序时,该错误不会触发段错误,而是使进程处于 sleep 模式,内存消耗极高,接近 25%。通过这种方式,进程停留在系统中并占用内存,从而导致高负载和峰值。
结论是,在 CentOS 中运行时,需要非常擅长编码中的内存泄漏检查,因为与 RHEL CentOS 不同,CentOS 不够智能,无法 self 修复。
关于Centos 6.5 CPU 负载间歇性高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25531705/