歡迎光臨
每天分享高質量文章

通向架構師的道路 ( 第十五天 ) IBM Websphere 的安裝與優化

(點擊上方公眾號,可快速關註)


來源:MSSQL123 ,

www.cnblogs.com/wy123/p/8419707.html

一、IBMWebsphere

02年開始接觸EJB1.x時,當時有一本巨肥厚無比的書叫作”ejb從入門到精通(master ejb2.0)”,紅皮的,wrox公司出版的。該書帶有1張光盤,光盤裡有3個App Server。

  1. Jboss2.2.1

  2. Weblogic6.1

  3. IBM Websphere ApplicationServer5.x

從那時起開始知道,哦,原來這3大廠商是做j2ee容器的。果然,時至今日這三大容器還是處於世界上無可爭議的地位。

因此,我們前面講了tomcat+apache(集群), weblogic+apache(集群),Websphere的基本應用與概念也是逃不了的。

Websphere現在已經在IBM的任何一個產品中占據了主要的地位,幾乎各個IBM的企業級應用產品如:IBM iLog Jrulz, IBM Lombardi, IBM Websphere Portal Server, IBM TAM等等等,這些產品在安裝時第一個就是將IBM Websphere Application Server或者是IBM WebsphereApplication Server Network Deployment(WASND)先安裝在你的服務器上。

因此我們很有必要去好好學習和掌握IBM WAS的安裝,與IBM HttpServer(被IBM改進過的商業級Apache Server)的集成以及WASND(用作集群的IBM WAS安裝版)。

二、基本概念

IBM系列產品使用的是IBM自身帶的JDK,這個JDK也是被IBM進行過了改進的,被稱為IBMJDK。

該JDK和我們傳統的JDK即ORACLE-SUN的不太一樣,不要試圖去用前面所講的一系列的Oracle Sun的JDK里的優化引數去應用在IBM JDK上,這是完全不對的。

而且,IBM JDK與IBM Websphere Application Server(WAS)之間的整合有嚴格要求:

IBM WAS6.X可以支持JDK1.5,如果你的工程里有用到JDK1.6的特性,那麼在IBMWAS6.X上不要想跑起來。

IBM WAS7.x即後續版本可以支持JDK1.6,但是,你不要認為在IBMWAS6.x上能夠運行的跑到IBM WAS7.x上一樣可以運行,因為有些工程用到了IBM JDK的特性,比如說有些工程用到了IBM JDK中的webservice,結果在6.x上跑得挺好,到了7.x上死活跑不起來,沒辦法,這就是IBM JDK,它公司大,所以修改了一些東西為它自己的利益所服務。而不像我們的Oracle Sun的JDK目前還是遵照著標準,高版本一定兼容低版本里編譯出來的東西。

說這個問題就是因為以前曾經發生過,有專案組用ssh2(struts2+spring3+hibernate3),結果客戶的環境是IBM WAS6.X,而專案開發用的是Tomcat6.x與jdk1.6,結果在實際production環境上佈署失敗,雖然後來通過補丁等一系列手段可以在IBM WAS6.X上佈署起工程來,但是前面已經給客戶帶來了極不好的影響。

為此,IBM公司還出了一套系結其WAS的開發工具即:IBM RAD,IBMRAD7.0只支持WAS6.X,而IBMRAD7.5即後續版本可以支持到WAS7.0並支持JDK1.6的相關特性,因此如果你的工程環境全部是IBM的WAS相關環境(WAS很貴,三大產品中最貴的要屬這個WAS了,買得起這個的客戶一般非銀行即大型保險公司),那麼也請你最好使用IBM RAD去開發相關的工程吧,讓客戶掏錢就是了!

三、WAS安裝

WAS的安裝包里一般有一個launchpad.exe或者是在下載後的WAS安裝包.zip解壓後會有一個was目錄,該目錄中有一個install.exe檔案,目前的IBMWAS6.x系列不能在Win7下正常運行安裝程式,因此如果你的機器是win7,請安裝下麵這個設置截圖來修改WAS安裝程式的相關屬性,即可讓WAS6.X系列的安裝程式也能夠在win7下順利運行並安裝了。

如果你是WAS7.X ,那麼完全可以在win7下順利安裝,不需要修改任何屬性。

Launchpad運行後的主界面

下一步

設置你的WAS的安裝目錄,這邊這個”d:\IBM\WebSphere\AppServer”又被稱為“WAS.HOME”。

請在這一步時選擇“無”,一定記住,要不然WAS會建一個預設的server(類似於weblogic里的domain)並且將它註冊為我們的windows的service,這是我們不需要的,我們將會在稍後的教程中使用命令列來啟動和停止我們的WAS,必竟以後我們在production環境中一般都使用64位的UNX或者是LNX,而非Windows。

下一步,下一步一路到底,然後開始安裝

安裝完了,請把“使用概要管理工具創建新的WebSphere Application Server概要檔案(R)”前的“勾”去掉,我們將使用選單來創建WAS的概要檔案(即相當於weblogic里的domain)。點[完成]結束安裝。

安裝完後使用選單啟動我們的概要管理工具,概要管理工具會為你創建WAS的概要檔案,即profile,WAS的運行都是基於一個個profile的。

在概要管理工具的主界面點[啟動概要管理工具]這個按鈕。

點[創建]按鈕

選中“應用程式服務器”,下一步

我們使用“高級概要檔案創建”。

下一步

下一步

概要檔案名,因為前面我們說過了概要檔案就是WAS內的一個server,一個WAS可以包含多個概要檔案。

因此這邊我們的概要檔案名為myserver1,而我們的物理位置也叫myserver1。

而該概要檔案指向的server name也為myserver1。

這裡用於配置我們的WAS的管理界面登錄時所需的用戶名與密碼,我們使用:

loginId:  admin

password: password_1

此處的“預設密鑰庫密碼”我們全部設成“aaaaaa”,即六個a,然後下一步

這邊是設的是WAS的端口,常用的主要為:

9060(was console的端口)

9080(was應用程式佈署完後的端口,類似於tomcat的8080端口)

9043(was console的https端口)

9443(即was應用程式佈署完後的https端口,類似於tomcat的8443端口)

如果你的WAS已經事先創建過一個profile,你再創建一個profile,這些端口的數字都會自動在最未尾加一,比如說我們這個profile叫myserver1,那麼我們再創建一個myserver2,那麼myserver2在此處的端口自動會顯示成:

9061

9081

9044

9444

等等等。

下一步

請將“將應用程式服務行程作為Windows服務運行(R)”選擇前的“勾”去掉。

下一步

下一步,最後review一下,點[創建]按鈕

開始創建profile

創建完後

1. 把啟動第一步控制台這個選項前的勾去掉。

2. 點擊[完成]按鈕

該profile創建完成後我們的目錄結構如下截圖所示:

四、WAS的啟動與停止

4.1 啟動WAS

命令格式為:

startServer serverName –profileNameyourProfileName –username loginId –password password。

看到“行程標識為2360”,即代表我們的WAS啟動成功了。

啟動成功後可以通過http://localhost:9060/ibm/console這個地址來訪問我們的“管理控制台”

該管理控制台會自動將地址變為:https://localhost:9043 這樣的格式。

4.2 停止WAS

把startServer換成stopServer即可,後面引數一樣!

五、管理WAS

5.1 優化WebSphere

WebSphere里的profile剛配完,一般預設的heapsize即Xms與Xmx值只有256mb,而IBM WAS是幾個J2EE服務器中最吃記憶體的機器,在佈署一些EAR應用時,如果你的EAR中使用的lib即jar files較多,加載時往往會超出256mb的限制,如果你的WAS在安裝完後不進行適當的優化就用來佈署應用,很快就會成死機狀,然後在相應的profile的目錄中會留下一堆的heapdump即記憶體out of memory並造成了was檔機後留下的dump檔案。

因此在裝完WAS配完profile後,請先進行適當的優化。

5.1.1 修改系統打開檔案數(windows系統忽略)

如果你的機器為Linux/Unix,請:

調整Linux/Unix系統允許打開的最大檔案數,系統預設一般為1024。

我們可以執行ulimit -n可查看這個數值。

通過vi /etc/security/limits.conf加入以下兩行:

* soft nofile 300000

* hard nofile 300000

重新系統後通過ulimit -a可以查看結果。

5.1.2 優化資料庫連接池

優化資料庫連接池,通過點擊相應的datasource進入屬性頁後,點擊“連接池屬性”可以進行連接池的優化(相關資料庫連接池優化見第八天之weblogic與apache的整合與調優中的4.2.5 小節調優Weblogic的資料源)。

5.1.3更改Web容器執行緒池大小

該引數在管理控制台里的“服務器→應用程式服務器→server1→執行緒池”的“WebContainer”中進行設置,將“最大大小”的預設值50改成40,“最小大小”的預設值10改成40。逐一對每個成員做相應的修改。

不要勾選“允許執行緒分配超過最大執行緒大小”。

 

5.1.4 更改會話超時和啟用servlet高速快取

該引數在管理控制台里的“服務器→應用程式服務器→server1→會話管理”的“會話超時”中進行設置,將預設的30改成15;在“服務器→應用程式服務器→server1→Web容器設置→Web容器”。逐一對每個成員做相應的修改。

記得Web容器里勾選“啟用servlet高速快取”。

5.1.5更改JVM引數

即修改相應的heap size與添加一些JVM調優引數

該引數在管理控制台里的“服務器→應用程式服務器→server1→行程定義→Java虛擬機”里定義

點這個”Process Definition”,然後在下麵這個界面中點“Java Virtual Machine”

顯示下麵這個界面

註意:

這邊的Generic JVM arguments就是IBM的jvm優化引數了,但是此處的jvm優化引數不能直接套用我們在前面tomcat和weblogic中所提到過的相關jvm優化引數,因為這個是IBM JDK,和ORACLE-SUN的JDK不一樣的。

IBM JDK的JVM常用引數

-Xquickstart

此設置影響 IBM JVM 使用較低優化級別來編譯類方法的方式,這將提高服務器啟動速度,但會使運行時性能下降。預設情況下,如果未指定此引數,IBM JVM 最初將使用較高的初始優化級別來執行編譯。此設置能夠提高運行時性能,但會減慢服務器啟動速度。

-server

基於 Sun 的 Hotspot 技術的 JVM 最初使用低優化級別來編譯類方法。這些 JVM 使用簡單編譯器和能夠進行優化的 JIT 編譯器。通常情況下,使用簡單 JIT 編譯器。然而,可以通過設置此選項來使用能夠執行優化的編譯器。此更改將顯著提高服務器的性能,但使用能夠執行優化的編譯器時,服務器的預備時間將會較長。

-Xms與-Xmx

這個就不用多說了吧,前面的tomcat與weblogic的優化中提到過多次了。

註 意:

32位系統的JVM最大值不超過2048m,如果有充足的記憶體,可以多建立幾個節點集群成員。

-Xgcpolicy

將 gcpolicy 設置為 optthruput 會禁用併發標記。如果沒有暫停時間問題(表現為應用程式響應時間不規律),那麼應該使用此選項來實現最大吞吐量。將 gcpolicy 設置為 optavgpause 會使用預設值來啟用併發標記。此設置將減少由正常垃圾回收所引起的應用程式響應時間不規律情況。然而,此選項可能會降低整體吞吐量。

-Xnoclassgc

預設情況下,當一個類沒有任何活動實體時,JVM 就會從記憶體中卸裝該類,但是這樣會使性能下降。如果關閉類垃圾回收,就可以消除由於多次裝入和卸裝同一個類而造成的開銷。

如果不再需要某個類,那麼該類在堆中所占用的空間通常將用於創建新物件。但是,如果應用程式通過創建類的新實體來處理請求,並且該應用程式的請求是隨機出現的,那麼可能會發生以下情況:先前請求者完成後,正常的類垃圾回收將通過釋放這個類占用的堆空間來清除這個類,但當下一個請求出現時,又必須將這個類重新實體化。在這種情況下,您可能想使用此選項來禁用類垃圾回收。

下麵是我本機上的一個設置,供參考:

-Xgcpolicy:gencon–Xnoclassgc

5.1.6 更改ORB服務

進入管理控制台里的“服務器→應用程式服務器→server1→ORB服務”,勾選“按取用傳遞”;執行緒池設置則選擇“使用與執行緒池管理器相關聯的 ORB.thread.pool 設置(建議)。”,點擊“ORB.thread.pool”,修改“最小大小”的預設值10為40,“最大大小”的預設值50為40,不要勾選“允許執行緒分配超過最大執行緒大小”。逐一對每個成員做相應的修改。

5.1.7 去除應用程式的類重新裝入選項

進入管理控制台里的“應用程式→企業應用程式”,點擊某一應用程式進入,點擊“Web模塊的 JSP 重新裝入選項”,將“JSP啟用類重新裝入”的勾去掉。

5.2 創建資料源

我們拿WAS來佈署一個web應用,那麼就需要先創建資料源,請按照下麵的步驟。

先創建JDBC Provider(提供程式)。

註意在下拉框中選擇具體的“作用域”,即類似於weblogic里的target,然後點[新建]按鈕。

我們使用oracle11g來做我們的資料源。

[下一步]

類路徑保持預設,我們回頭會再給它具體指定。

點擊[完成]後,註意要按這個“儲存”連接,在WAS里作過任何東西的改動在點[確定]或者是[完成]後都會在adminconsole的右上端有這麼一個提示,一定要記得點這個“儲存”,要不然前面做的一切操作會被廢棄。

點擊“儲存”後,我們的JDBC提供程式串列里多了一項。

我們點一下這個“Oracle JDBC Driver”,對它進行設置。

在“類路徑”里,我們填入完整的該ojdbc6.jar所在的路徑,註意要用“/”作路徑分隔符,而不是“\”。

設置完後點[確定]傳回,並點“儲存”。

我們的JDBCProvider有了,我們要設置我們的DataSource,將DataSource系結JDBC Provider後給它取個JNDI名,這個JNDI名就是我們工程中連接資料庫時需要指定的JNDI名了。

填入和我們的工程中一樣的JNDI名稱,此處“資料源名”與“JNDI名稱”不能同名啊,不要把“資料源名”和“JNDI名”搞錯了。

[下一步]

為我們的資料源指定前面設置的JDBC Provider。

填入你要連接的資料庫的相應的URL。

完成並儲存後傳回資料源設置串列,我們新設置的資料源已經在串列中了。

點這個我們剛纔新建立的資料源。

我們現在有了jdbc driver,有了jdbc url,為了連接資料庫我們還需要什麼?用戶名 & 密碼,對吧!

點右邊這個“JAAS-J2C認證資料”。

為我們的認證起個名字,然後輸入用戶標識(資料庫連接用戶名)與密碼(資料庫連接密碼)。

 

點[確定]後傳回並“儲存”。

還是選擇我們剛纔創建的“資料源”,可以直接在“麵包屑”中找到我們剛纔創建的資料源。

在資料源屬性頁面中往下拖,到頁面底部看到有一個“安全性設置”,OK,將我們的資料源系結我們剛纔創建的“J2C認證”吧。

 

[確定]並“儲存”後,可以在資料源的屬於頁里點這個[測試連接]按鈕來進行我們的資料庫連接測試。

下麵是資料源測試成功的訊息提示,代表著我們的資料源已經測試成功。

在我們的資料源的屬性頁面右邊有一個“連接池屬性”

點“連接池屬性”,此處就是用來配置和優化我們的資料庫連接池,如何優化這邊就不多講了,因為已經在weblogic相關教程中詳細描述過了,大同小異,一通百通。

5.3 在WAS內佈署應用

一般我們使用ear格式在WAS內佈署我們的web應用,因此此處和weblogic, tomcat稍稍有點不一樣。

為此,我們做了一個ant腳本用於打包我們的ear。

一個ear檔案的格式應該如下:

myEAR

|__ META-INF

|__application.xml

|__myWAR.war

可以看到,一個ear檔案:

包含一個META-INF目錄,在該目錄下會有一個application.xml檔案。

然後和META-INF目錄同級的地方會有一個.war檔案,這個war檔案就是標準的war格式的web應用。

5.3.1 application.xml檔案

 

 

         xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” version=”5″

 

         xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd”>

 

         cbbsEAR

 

         

 

                   

 

                            cbbs.war

 

                            /cbbs

 

                   

 

         

 

5.3.2 使用Ant打包

實際上我們的ant腳本很簡單,它作瞭如下幾件事:

  • 用IBM WAS自帶的JDK即IBM JDK編譯我們的工程,確保我們的工程可以被我們的WAS能夠解析。

  • 將我們的工程打成.war檔案

 

           

 

         

將.war檔案與application.xml檔案打成.ear檔案

 

           

 

                   

 

                             

 

                   

 

           

 

         

下麵給出我們完整的Ant腳本,該腳本還使用到了一個外部的build.properties檔案用於設置一些常量。

build.properties

websphere.v7.home=D:/IBM/WebSphere/AppServer

 

project.home=D:/wspace

 

webAppName=cbbs

 

war.name=${webAppName}.war

 

ear.name=${webAppName}EAR.ear

 

eardescription.file=D:/wspace/${webAppName}/application.xml

build.xml

 

 

         

 

         

 

         

 

         

 

         

 

         

 

         

 

         

 

         

 

         

 

         

 

         

 

         

 

                   

 

  

 

                   

 

                   

 

                           

 

                   

 

                   

 

                           

 

                   

 

                   

 

                           

 

                   

 

                   

 

                           

 

                   

 

         

 

         

 

         

 

         

 

                   

 

                   

 

                   

 

                   

 

                   

 

                   

 

                   

 

                   

 

                   

 

                   

 

                   

 

                   

 

                   

 

                   

 

                   

 

         

 

  

 

         

 

         

 

                   

 

                   

 

                           

 

                   

 

                   

 

                           

 

                                     

 

                           

 

                   

 

                   

 

                           

 

                                     

 

                           

 

                   

 

                   

 

                           

 

                                     

 

                           

 

                   

 

                   

 

                           

 

                                     

 

                           

 

                   

 

                   

 

                           

 

                                     

 

                           

 

                   

 

                   

 

                           

 

                                     

 

                           

 

                   

 

                   

 

                           

 

                                     

 

                           

 

                   

 

                   

 

                           

 

                                     

 

                           

 

                   

 

                   

 

                           

 

                                     

 

                           

 

                   

 

                   

 

                           

 

                                     

 

                           

 

                   

 

         

 

         

 

                   

 

         

 

         

 

                   

 

                           

 

                                     

 

                           

 

                   

         

使用IBM WAS自帶的JDK對工程進行編譯

該套Ant腳本其實還可以繼續優化,這個就留給大家了,關鍵是提供給了大家一個思路。

除了上邊所說的涉及到如何打war,如何打ear的核心腳本外,關鍵在於這個“使用WAS自帶的IBM JDK”對工程進行編譯是很重要的,下麵是核心陳述句,註意紅色加組的部分。

 

                   

                   

 

                   

                           

                   

 

                   

                           

                   

 

                   

                           

                   

 

                   

 

                           

                   

 

 

executable=”${websphere.v7.home}\java\bin\javac” compiler=”javac1.6″ fork=”true”>

 

                           

 

5.3.3 佈署EAR

編譯完後該Ant腳本會產生一個cbbsEAR.ear的檔案:

這個檔案就是我們用於佈署的EAR檔案了。

根據下麵的步驟一步步來佈署我們的ear吧。

點[安裝]

下一步

這步會比較慢,需要慢慢等一會。

下一步下一步到一直到下麵這個界面,請一定記住要把我們之前設置的“資料源”與工程中的jdbc的JNDI名進行系結啊,一定不要忘。

把“選擇”處的勾打上後,點擊[瀏覽]按鈕,選擇我們之前建立的“DataSource”。

點[應用]按鈕後回到繼續佈署的界面。

將需要佈署的一些選項review一遍並確認無誤後點[完成]按鈕,開始佈署。

WAS佈署的進度界面

佈署完後不要忘記點紅圈處的“儲存”啊,要不一切白費。

佈署完後,我們的應用的應用程式狀態為“停止”狀態。

選擇我們的應用,點[啟動]按鈕

啟動後我們的應用程式應該為如下狀態

 

打開一個ie,輸入: http://localhost:9080/cbbs

登錄後進行一些操作,一切正常,WAS安裝設置成功。

結束今天的教程,明天的教程將會著重在使用IBM的HttpServer即IHS如何去結合IBM WebSphere Application Serve做集成。

系列


看完本文有收穫?請轉發分享給更多人

關註「ImportNew」,提升Java技能

赞(0)

分享創造快樂