本文介紹什麼是Java,AIX下的Java版本,Java的性能準則,AIX提供的監視Java的工具,以及如何在AIX用戶環境下進行Java應用程式性能調優。
|
1、什麼是Java
Java 是一種物件導向的程式設計語言。它以 C++ 為模型,被設計成小的、簡單的、在源和二進位級別跨平臺的可移植的語言,Java 程式(applets 和應用程式)可以運行於任何已經安裝了 Java 虛擬機器(JVM)的機器上。Java 相對其它電腦語言有顯著的優勢,適合於任何程式設計任務,Java 有以下優勢:
Java
是獨立於平臺的:Java
最顯著的一個優勢就是它輕易從一台電腦系統移動到另一台的能力。對於任何Web軟體至關重要的就是在許多不同系統上運行同一個程式的能力, Java 成功之處在於在源和二進位級別能夠獨立於平臺。
Java
是物件導向的:Java 的另外一個優點在於利用物件導向的方法。這允許你創建模組化程式和可重用代碼。
Java
容易學習:Java 被設計成容易使用的語言,因此它更易於寫、編譯、調試以及學習。
Java
是電子商務的解決方案: 由於 Java 的健壯性、使用方便、跨平臺的能力和安全性特點,它已成為了提供世界範圍內網際網路解決方案的選擇語言。
2、AIX環境下的Java版本
目前,AIX作業系統可以支援多個Java版本,可以在一個作業系統下同時安裝多個Java版本,應用需要哪個版本時,可設置PATH路徑到此版本所在的目錄。以下是AIX可支援的Java版本資訊:
Java 1.1.8 Java 1.2.2 Java 1.3.0 Java 1.3.1 32bit Java 1.3.1 64bit Java 1.4 32bit Java 1.4 64bit
從性能來看,儘量使用高版本的AIX和高版本的Java,並且安裝最新的作業系統和Java補丁包。當需要超過2GB的Java
堆時,需要使用64bit的Java。在AIX環境下,Java是免費使用的,可以從下列網址下載Java軟體:
http://www6.software.ibm.com/dl/dka/dka-p
從下列網址下載AIX作業系統和Java的補丁包:
http://techsupport.services.ibm.com/server/fixes.
3、Java 性能準則
在編寫Java應用程式時,以下是基本的準則:
4、監視 Java
在AIX 作業系統中有許多工具可以用來監視Java應用程式的性能,以下是簡單的概述。
vmstat
這條命令提供了各種系統資源的資訊。它報告了運行佇列以及等待佇列中內核執行緒的統計資訊、記憶體使用、頁面調度空間、磁片 I/O、中斷、系統調用、上下文切換以及 CPU 活動。
iostat
這條命令報告了詳細的磁片 I/O 資訊。
topas
這條命令報告了 CPU、網路、磁片 I/O、工作負載管理器和進程活動。
tprof
-k -s -e -x "sleep 10"
這條命令可被用來剖析應用程式以查明任何可能影響性能的活動程式/方法。
ps
-mo 執行緒
這條命令顯示了一個進程或執行緒綁定於哪一個 CPU。
java
-verbose:gc
這個選項可被用來檢查垃圾回收對您的應用程式的衝擊。它報告了垃圾回收所花的總共時間,平均每一次垃圾回收花費時間,平均每一次垃圾回收收集的記憶體以及平均每一次垃圾回收中的物件數。
5、Java應用程式性能調優
建議在運行Java應用的AIX用戶環境下,設置以下環境變數。
AIXTHREAD_SCOPE=S
用 AIX 4.3.1 啟動,此變數缺省值為 P。這表示進程寬度爭用作用域(M:N)。對於 Java 應用程式,您應該設置這個值為 S,它表示系統寬度爭用作用域(1:1)。
AIXTHREAD_MUTEX_DEBUG=OFF
用調試器為使用目的維持一個活動人工干預清單。
AIXTHERAD_COND_DEBUG=OFF
用調試器為使用目的維持一個條件變數清單。
AIXTHREAD_RWLOCK_DEBUG=OFF
pthreads 庫用調試器為使用目的維護一個包含活動互斥鎖定、條件變數以及讀/寫鎖定的列表。當一個鎖定初始化,如果列表中沒有這一鎖定,它被加入到列表中。此列表以鏈表形式實現,因此當列表變大時通過搜索它來確定一個鎖定是否存在就包含了性能問題。問題是此列表被鎖定保護,這一鎖定在搜索操作過程中一直保持。當搜索進行時其它對 pthread_mutex_init() 調用的子常式必須等待。為了優化性能,您應當將此執行緒調試選項設置為 OFF。它們的缺省值為 ON 。
SPINLOOPTIME=500
spinloop 時間是一個進程在阻塞前在一個繁忙的鎖定上可以迴圈的次數。這個值缺省設置為 40。如果 tprof 輸出表明 check_lock 常式具有高的 CPU 使用率,並且如果通常鎖定在短時間內可用,您應當通過將值設置為 500 或更高來提高迴圈時間。
同樣,運行Java應用的AIX用戶環境下,推薦以下設置:
l ulimit -d 不限制 l ulimit -m 不限制 l ulimit -n 不限制 l ulimit -s 不限制
作業系統內一定的環境參數和設置可以用來調優 Java 性能。同樣,許多調優系統部件如 CPU、記憶體、網路、I/O 等等的技術,可以提高 Java 性能。
為了使得 Java 的性能和可伸縮性盡可能的好,您應當使用最新可用版本的作業系統和 Java,以及Just-In-Time(JIT)編譯器。
與 Java 相關的最普通的性能問題與垃圾回收機制有關。如果 Java 堆太大,則堆將必須駐留在主記憶體外。這將導致頁面調度活動增加,它將影響 Java 性能。同樣,一個大的堆可能花很多秒去填充。這意味著,儘管垃圾回收活動不頻繁,但與垃圾回收相聯繫的暫停次數將增加。為了調優 Java 虛擬機器(JVM)的堆,使用 java 命令加選項 -ms 或
-mx。使用垃圾回收統計資訊來説明決定最佳設置。
|
2014年2月7日 星期五
淺談AIX環境下的Java性能調優
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言