我們運行了很多Tomcat服務器,並且觀察到完整垃圾回收(GC)通常每小時執行一次,特別是當內存使用率相對較低時。準確的時間似乎與應用程序服務器啓動的時間有關;如果服務器在01:13啓動,完整的GC在02:13完成,下一個完整的GC將在03:13完成。我一直無法找到任何文件來解釋這種行爲。爲什麼這些Tomcat服務器的JVM每小時執行一次完整的GC?
這是一個問題,因爲同時啓動的服務器池都傾向於在大約同一時間完成全部GC。如果GC延遲時間足以導致負載平衡器將服務器標記爲關閉,則整個應用程序可以在一段時間內脫機。如果完整的GC可以在一段時間內分佈,這樣會更好,因此沒有兩個服務器同時進行完整的GC,但我找不到任何方法來控制此行爲。
是否有其他人看到過這種行爲?有什麼方法可以影響這些「常規」完整GC發生的時間嗎?
你是否有一個時間表運行的進程(通過石英等)可能會填補定期堆起來? – 2013-02-15 20:41:46