[英]Large Permgen size + performance impact
我們正在tomcat 6上運行liferay門戶。每個portlet是一個包含的Web應用程序,因此它包含portlet本身所需的所有庫。 我們目前有30多個portlet。 這樣的結果是,我們部署的每個portlet的tomcat的permgen都會增加。
現在,我們可以遵循兩條路徑。 將我們每個Portlet常用的一些庫移到tomcat共享庫中。 這將包括諸如spring / hibernate / cxf / ....之類的東西,以減小我們的高熱值,或者更容易的是增加高熱值。
第二種選擇將使我們能夠將每個portlet保持為獨立的實體。
現在的問題是,由於增加了冷氣的大小,會對性能產生負面影響嗎? 我們目前以512MB運行。 我幾乎沒有發現有關此的信息。 但是發現有人在談論人們正在談論以1024MB的permgen大小運行沒有問題。
只要您的服務器上有足夠的內存,我就無法想象任何事情都會出錯。 如果您不這樣做,那么Tomcat甚至可能無法啟動,因為它無法分配足夠的內存。 因此,如果啟動了,那就很好。 就我的經驗來看,1GB PermGen非常完美。
大型PermGen的不利之處在於,它為您留出了更少的系統內存,您可以將其分配給堆(Xmx)。
另一方面,我建議您重新考慮將Portlet視為獨立實體的好處。 例如:
lib/ext
libs切換到portlet的lib
庫僅是更改依賴項范圍的問題(對於門戶網站libs可能更煩人); 據我所知,Liferay SDK還通過添加其他ant任務來解決依賴關系並根據需要將其從portlet的lib
刪除,從而使使用ant進行相似切換的操作變得容易。 PermGen內存可以被完整的收集垃圾回收,因此增加它可能會在進行完整的收集時增加GC時間。
這些收集不應該經常進行,並且通常只需要不到一秒鍾就可以完成1GB的permgen內存-我只是從(我有些朦朧)的內存中提取這個數字,所以如果您真的擔心GC時間到您自己進行一些計時測試(使用-verbose:gc
並閱讀日志,更多詳細信息在這里 )
彼爾姆根尺寸超出OLD Gen-所以不要混淆。 關於第二點的意見-由於內存非常便宜,因此我們可以盡可能地增加permsize-但這會引發一些有關如何管理代碼的問題。 為什么我們需要這么多的燙發-JTa是否正在消耗那么多-我們正在加載多少個類? 應用程序正在打開多少個文件描述符(使用lsof命令檢查)。 我們應該設法回答這些問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.