很多應用的表現層都是使用JSP和Servlet, 這一篇探討一下怎麼通過Coding最佳實務和部署過程的配置提高這類應用的效能。
推薦的最佳coding 實踐
這一段提供一些技巧和coding實踐去提高JSP和servlet的效能。一下是一些提高JSP和servlet效能的通用規則
- 最小化servlet中的java 同步。
- 不要用servlet的單線程模式。
- 使用servlet的init()方法進行一些昂貴的一次性的初始化。
- 避免使用System.out.pintln()調用。
避免使用共用的可修改的類變數
在servlet的多線程模式中(預設情況下),一個應用伺服器執行個體只有一個的servlet執行個體,這個servlet的所有請求都共用同一個
servlet執行個體,如果在servlet內有同步代碼塊的話會造成線程爭奪,因為servlet的類變數建立需要同步,所以要避免使用共用的可修改的類
變數。
HTTP Session處理
使用HTTP Session的時候請遵守一下規則:
- 不要隨意建立Session, Session的建立不是免費的。如果不需要就不要建立
- 如果session不需要了請使用javax.servlet.http.HttpSession.invalidate()來釋放session
- 保證session小型化可以減少反應時間,如果可能的話,請保證session小於7K。
- 在JSP裡面使用<%page session=”false”%>指令來避免應用伺服器自動在不需要的時候建立session.
- 避免session中存放大的對象,這樣會強制序列化和增加過度計算,通常情況下不要存放大的對象到session裡面。
- 不要緩衝交易資料到HttpSession裡面,訪問HttpSession裡面的資料是非事務的,最好把這些資料存放在資料庫或者用實體
Bean訪問,事務如果失敗會恢複到它原來的狀態,不過,這些失效的或者不再精確的資料會繼續存放在session裡面。應用伺服器提供了唯讀bean
管理器去緩衝這些唯讀資料。
配置和部署技巧
請按照這些配置技巧去提高效能,這些技巧是用在產品環境的,不是開發環境。
- 為了提高類的載入時間,避免在伺服器的CLASSPATH裡面使用過多的目錄,把跟應用有關的類發放到jar檔案裡面。
- HTTP反應時間跟HTTP server調整有很大關係。
- 如果可能,請緩衝servlet的結果。
- 如果一個應用不含任何JEB,把應用部署成war檔案,不要部署成ear檔案。
最佳化SSL
只談Solaris,不翻了
禁用Security Manager(針對Appliciation Server)
Security
manager是非常昂貴的,因為在調用需要的資源的時候必須要調用doPrivileged()方法而且還必須要檢測server.policy裡面的
資源。如果你確信你的伺服器沒有惡意的代碼而且你也不使用使用者認證,你就可以禁用secrity manager.
禁用server.policy檔案,你可以到Admin Console. 在Configurations > config-name > JVM Setting, 刪除包含一下文字的選項。
-Djava.security.manager
從來沒翻譯過這麼多東西,好累啊,明天繼續吧,EJB效能,我的重頭戲
來自我的小站 www.threes.cn