2014-08-27 76 views
-2

我在CentOS 6.5中運行一個網絡服務器應用程序,每個fork有200個最大客戶端分叉。通常情況下,流量是每分鐘200K個請求。我已經看到CPU負載高達200%,然後在幾分鐘內恢復到正常的2%左右。它每隔30分鐘左右發生一次。Centos 6.5 CPU間歇性加載高

運行在RHEL 5.8中的相同應用程序沒有這樣的問題。

我想知道CentOS與RHEL的性能有很大差異。

我已經使用valgrind清除了任何內存泄漏的代碼,但具有相同的問題。在我看來,這些東西讓我們想起了CentOS在他們死後正在創造叉子的負擔。 CentOS內核沒有使用快速定時器。 CentOS內存管理器與RHEL無效。 我應該試試CentOS 6.3,要麼比新版本的CentOS 6.5更穩定。

+1

非常相似:http://stackoverflow.com/questions/25491949/centos-6-5-spike – 2014-08-27 16:32:33

回答

1

經過很多天,我們發現在我們的代碼中存在一個錯誤,它在RHEL中執行分段錯誤,並且由於多進程應用程序新進程在此之後誕生,並且RHEL有效地釋放了引起該進程的內存分段錯誤。

但是,當我們在CentOS上嘗試相同的應用程序時,該錯誤不會觸發分段錯誤,但會使進程處於睡眠模式,並且極高的內存消耗將近25%。通過這種方式,進程停留在系統中並保持導致高負載和尖峯的內存。

結論是,在CentOS中運行編碼時需要非常好的內存泄漏檢查,因爲與RHEL不同,CentOS並不足以自我修復。