程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> WebSphere >> 通向架構師的道路 第十五天 IBM Websphere的安裝與優化 (一)

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

編輯:WebSphere

一、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 最初將使用較高的初始優化級別來執行編譯。此設置能夠提高運行時性能,但會減慢服務器啟 動速度。

缺省值: 高初始編譯器優化級別 建議值: 高初始編譯器優化級別 用法: -Xquickstart 可以加快服務器啟動速度。

ü   -server

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

缺省值: 簡單編譯器 建議值: 能夠執行優化的編譯器 用法: -server 啟用能夠執行優化的編譯器。

ü   -Xms與-Xmx

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

注 意:

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

ü   -Xgcpolicy

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

缺省值: optthruput 建議值: optthruput 用法: Xgcpolicy:optthruput

ü   -Xnoclassgc

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

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

缺省值: 啟用類垃圾回收 建議值: 禁用類垃圾回收 用法: Xnoclassgc 禁用類垃圾回收

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

-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相關教 程中詳細描述過了,大同小異,一通百通。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved