表 1 列舉了共同構成基於 Web 的系統的軟件和硬件的抽象級別
觀點
參見表 1,硬盤的固件由 VIO Server 調用,從硬盤的視角來看,這就是調用固件的應用程序。固件開發人員會為其應用程序提供應用編程接口,但不會關注該設備在插好之後是由 VIO Server 訪問還是 RAID 控制器、SAN 之類的設備訪問。只要應用程序使用正確的編程接口與固件通信,就一切正常。
同樣,從操作系統的視角來看,運行在操作系統上的 “應用程序” 是 Java 虛擬機(JVM)。操作系統並不在意,JVM 運行的是龐大復雜的 Java 應用程序(WebSphere Application Server),還是在 Java 應用程序內部的 JEE 容器中運行的 Java 代碼。
從 Java 虛擬機的視角來看,其 “應用程序” 是 WebSphere Application Server。從 WebSphere Application Server 的視角來看,其 “應用程序” 是 servlet 或部署在其中的其他 JEE 構造。依此類推。可以看到,“應用程序” 的定義取決於視角。
全面的系統方法
如上所述,“應用程序” 的定義取決於視角。而相反,所有獨立組件和所有獨立 “應用程序” 都是互相依賴的。因而,為了優化 WebSphere 應用程序,單純地調優 JVM 或操作系統或者修改 Java 代碼並不夠。您需要的是開發出一種全面的視圖,檢查整個應用程序組合,確定依賴性在何處。若未理解對系統其余部分的影響,不應獨立調優任何部分。
類似地,在對 WebSphere 應用程序進行故障排除時,應著眼於整個應用程序組合,因為在一個層面上修復一個問題只是解決了問題的一部分。在出現問題時,客戶往往歸咎於組合中的某一個部分,而實際上問題在於一個截然不同的位置。
系統分層和觀點
要在 Power System 上運行的 WebSphere Application Server 中成功運行應用程序,您需要考慮上述所有視角。通常,企業中有著不同的專家團隊,提供以下領域中的一組技能:AIX 操作系統管理、Power System 硬件配置與調優、Java 和 WebSphere 應用程序工程。
關注各技能集的專家以整體系統觀點內的不同視角工作,如表 2 所示。因而,在嘗試將這些觀點整合為單一、完整的系統優化戰略時,很有可能對術語和交疊的功能產生混淆。
專家傾向於在一個層面上工作,例如,UNIX 系統管理員傾向於從操作系統的觀點觀察事物,Java 開發人員傾向於從應用程序編程人員的觀點觀察事物、表 2 列舉了 WebSphere Application Server 和系統管理觀點可能出現整合的系統特性和交互點。
表 2. 系統觀點和整合
觀點和術語
表 3 列舉了相似但有著不同用法的術語,如從 “systems” 的觀點來看或從 “WebSphere” 的觀點來看。
WebSphere Application Server 通常是使用安裝向導圖形化用戶界面(GUI)安裝的。但企業往往會自動化安裝過程,以便進行重復性的安裝和快速部署。WebSphere Application Server 安裝可使用兩種不同的支持選項實現自動化,即靜默安裝或 Installation Factory,下面將加以介紹。
靜默安裝
靜默安裝使用安裝向導,以靜默模式安裝產品,無需圖形化用戶界面。靜默安裝不會顯示向導界面,而是由安裝程序從您提供的文件中讀取所有響應。
必須首先在相應文件中定義安裝選項,之後才能發出安裝命令。請注意,靜默安裝模式不接受交互安裝選項。請參閱附錄 A “樣本文件” 第 424 頁中的 “WebSphere: responsefile.nd.txt”,查看一個響應文件樣本。
了解要安裝哪些組件、采用怎樣的安裝順序是十分重要的。您必須考慮網絡部署的通用安裝場景,以確定如何安裝您的應用程序服務環境。
WebSphere Application Server Network Deployment 的安裝通常涉及兩個任務。首先,安裝向導安裝一組共享的核心產品文件。接下來,安裝向導可選擇創建一個配置文件。配置文件就是一個獨立的數據分區,包含為應用服務器進程定義運行時環境的文件,如部署管理器或應用服務器。
安裝向導具有執行新產品安裝、向現有安裝添加新特性的增量式安裝、將安裝更新到新服務水平的現有安裝更新等功能。
Installation Factory
Installation Factory 可根據您的特定需求量身定制 “即用” 安裝包,用於以可靠、可重復的方式安裝 WebSphere Application Server。WebSphere Application Server 的安裝和配置只需要一個步驟:安裝 Installation Factory 創建的定制安裝包(CIP)。其他步驟將由您創建的 CIP 自動完成。Installation Factory 將 WebSphere 軟件產品的一個版本或發布版的安裝鏡像與可選資產相結合,創建 CIP。
可選資產可包括以下組件:
1. 適用的維護包。
2. 要在安裝和卸載、配置文件創建和刪除過程中運行的腳本或 Java 類。
3. 您計劃部署的應用程序的企業應用程序存檔(EAR)文件,並在單獨的應用服務器配置文件中提供默認部署選項。
4. 配置存檔(CAR)文件,用於從之前已經安裝和定制的獨立應用服務器中克隆獨立應用服務器配置文件。
5. 其他文件,如您希望使用自己編寫的腳本部署的、帶有定制選項的 EAR 文件。
唯一必需的資產就是 WebSphere Application Server 安裝鏡像,可通過產品光盤獲得,也可直接下載鏡像。
Installation Factory 包含圖形化用戶界面(GUI)工具(bin 目錄中的 ifgui 命令)和命令行界面工具(ifcli 命令)。
在創建 CIP 之前,首先必須為 CIP 創建生成定義。生成定義就是一個 XML 文檔,定義 Installation Factory 如何定制 WebSphere Application Server 產品。
使用 Installation Factory GUI 創建生成定義文件,這是一個 XML 文檔,指定如何生成 CIP(例如,在哪裡找到計劃使用的更新包)。您可以直接在 GUI 內生成 CIP,也可以選擇保存生成定義文件,隨後使用所提供的命令行界面工具在 GUI 之外生成 CIP。
您所創建的 CIP 將包含一個安裝程序,可用於以交互方式、安裝向導或靜默模式安裝 CIP。此外,CIP 可執行應用服務器的全新安裝,也可應用於應用服務器的現有安裝之上。無論是哪種情況,所得到的安裝都處於您所要求的維護水平、按照需求配置,您提供的所有應用程序都會被部署。這就是自動化 WebSphere 安裝的推薦過程。
JVM 調優
在 AIX 上調優 Java 時,有兩個主要領域需要考慮:內存管理和 CPU 性能。這一節簡要討論了這兩個領域。
內存管理
在優化 Java 運行時性能時,最優先考慮的就是調優內存管理。在這種上下文內,內存管理是指對象在堆內的分配和取消分配。內存管理是在運行時執行的,而不是在應用程序代碼中執行,這是與供應商 JVM 之間的主要差別。IBM 投入了大筆資金,研究 JVM 內的堆管理和垃圾收集。IBM JVM 提供了多種垃圾收集算法或策略,每一種策略都為一種具體的用途量身打造。這些策略可進一步調優以優化性能。
如果一個應用程序需要大量內存,AIX 將提供使用更大的頁面大小的機會。使用更大的頁面大小將減少與分頁相關的開銷,從而提高性能。
如果 JVM 的多個實例要在同一台機器或同一個分區內運行,那麼可通過使用共享類緩存來減少內存占用、縮短啟動時間。
CPU 性能
CPU 性能定義為處理器資源的有效利用率。為 Java 優化處理器利用率的大多數改進都來自創建運行時編譯系統。包含 “即時(JIT)” 或 “hotcode” 編譯器可大幅度提升 Java 運行時性能。所有 IBM JVM 中都包含 IBM 的 JIT,但也可以為特定應用程序調優 JIT。
AIX 上的 IBM JVX 的一個與眾不同的特性就是內置的微分區和動態邏輯分區(DLPAR)功能。如果 JVM 將在一個 LPAR 上運行,而這個 LPAR 是微分區,是其他分區共享的資源,那麼應保持謹慎,確保 JVM 始終有足夠的內存可用。
除了這些考慮事項之外,還有其他 AIX 操作系統參數可用於進一步優化 Java 運行時性能。第 127 頁的第 4 章 “AIX configuration” 介紹了這些可調優的參數。
使用默認 Java 運行時參數運行 WebSphere Application Server 很可能不會獲得最佳結果。默認值的配置是為了滿足所有類型的應用程序。但每一種應用程序都是獨一無二的,因而,最好能確定哪種調優參數能夠給特定應用程序帶來好處。第 303 頁第 6 章 “Tuning the IBM Java Virtual Machine” 中的指導原則可幫助您找到利用 AIX 功能和特性並提供最優結果的調優參數。
備注:IBM WebSphere Application Server 6 和 WebSphere Application Server 6.1 使用 Java 運行時的 Java 5 實現。Java 5 使用 MXBeans,在 javax.management 包中提供新的動態監控功能。