2013-05-31 74 views
-1

我有一個多人遊戲Java遊戲服務器。自我上次添加代碼以來,所有內容都運行穩定。什麼可能導致不正常的CPU使用率峯值?啓動服務器後,大約是10-20%。經過一段時間後,如1-2小時,cpu跳至107%和207%等等。 10個小時後,可能會達到1109%。 我正在使用netty,c3p0。在一個功能強大的專用Ubuntu機器上運行。Java進程CPU使用率增加

在此先感謝。

+0

如果不知道軟件的工作方式,就很難回答這個問題。 – Jesper

回答

0

沒有細節就很難回答,但一個好的開始是使用工具來診斷程序行爲。

使用JVisualVM(與JDK捆綁在一起)可以幫助您查找CPU是否被您的程序或垃圾收集器使用。

內存泄漏會導致垃圾收集器過度運行。

+0

http://imgur.com/dolwJem從這個內存/ cpu視圖中,你能確定它是否可以是內存泄漏嗎? – berkayk

+0

有一個可能的無限循環,我發現它,現在它是固定的。感謝分享JVisualVM。 – berkayk

1

閱讀:http://m.javaworld.com/community/node/8036

也許你有某種形式的內存泄漏。

+0

內存保持不變,當我問這個問題時(15分鐘前)cpu是409%-410%。現在它顯示了610%。死鎖會導致這種情況嗎? – berkayk

+0

http://imgur.com/dolwJem此圖顯示了內存,cpu和平均負載。 06:00是維護時間,這就是爲什麼當時使用率低的原因。 – berkayk

0

分析整個代碼後,我發現在某些情況下可能發生無限循環。 JVisualVM幫我找到了這個bug。

感謝您的幫助。