J2EE性能優化精粹

做了IT十多年,發現需要寫些文章來提高大家的水平。有幸培訓過不少人調優,並調試過多個大型上千萬的J2EE項目,總結了一些經驗,提供給大家。

如果一個系統出現性能問題,需要從上面四個方面來考察。

1、平臺

平臺包括內存和CPU。Java是比較喫內存的,如果內存很緊張,說明內存不夠。CPU的話,如果負載總大於75%,說明CPU很緊張。

2、Java虛擬機

很多人對這個不重視。其實,Java虛擬機是非常重要的。大家比較熟悉的和常用的是Sun的JVM。那爲什麼BEA用JRockit,IBM用自己的JVM?如果Sun的JDK很完美,我想BEA和IBM也不會花大把的銀子自己做個JVM。

以Sun的JVM 1.4比Sun的JVM 1.3快30%。

下圖是JRockit、Sun JDK 1.4.2、Sun JDK 1.4.1的比較。可以看出JRockit和Sun JDK 1.4.2持平,而Sun JDK1.4.1很差。

所以我們一定要看看自己用的JDK是多少版本,稍微一換,速度大幅提高。對Sun的JDK一定要用1.4.2。

另外JDK還有很多參數要調。

第一個就是-Xms -Xmx。

要記住-Xms -Xmx指的是圖中的堆的大小。物理內存被操作系統、JVM、其他程序和你的程序分享。根據我的經驗,一般-Xms設爲物理內存的1/4,-Xmx設爲物理內存的1/2

這個一定要設。比如安裝Weblogic,按照默認,用Sun的JDK,則爲-Xms32m -Xmx200m,你想200m那夠啊。1G的內存你可以用512m。對Tomcat,則沒設。這樣,你的程序會不斷分配內存、釋放內存,大大影響速度。如果併發用戶多,還會造成OutofMemory。

另外JVM還有很多參數,仔細研究,會提高不少速度。如對Sun JDK,採用UseTLAB,即線程局部分配內存,即分配內存的機制與C類似,會提高速度。這在IBM JDK中是默認的。

3、應用服務器

常用應用服務器包括Weblogic、WebSphere、Tomcat等,用好了都不錯。對於Tomcat,5.0會比4.1快很多,機制不一樣。對於Weblogic,那個weblogic.kernal.default線程的數量需要調,否則10幾個併發後就不行了。

Weblogic、WebSphere有調優的文檔,可以看看,大楷調的好,會有10%左右的提高,一般不用。但不要設置的不對,那就是錯誤。

4、程序

基本上性能慢都是程序寫的不好或有問題。前面講的都是傻瓜式的,稍微弄弄、注意點就好了。程序有問題,那纔是最不好查,也容易造成性能急劇下降的原因。

待續...

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章