生產(chǎn)環(huán)境中 WebSphere 應(yīng)用服務(wù)器的搭建與演示環(huán)境有很多不同,由于生產(chǎn)環(huán)境的多樣性、應(yīng)用場景的性能調(diào)優(yōu)、錯誤診斷等嚴(yán)格要求,生產(chǎn)環(huán)境中 WebSphere 應(yīng)用服務(wù)器的安裝涉及到安裝前系統(tǒng)各項檢查、安裝中各種參數(shù)調(diào)整,以及安裝后常見的管理任務(wù)。WebSphere 應(yīng)用服務(wù)器有著大量的資源可以參考,但對于很多僅僅搭建過演示或簡單測試環(huán)境的用戶來說,面對浩如煙海的文檔很難下手。本文試圖總結(jié)在搭建一個完整的 WebSphere 環(huán)境中遇到的常見問題和注意事項,為初次搭建 WebSphere 應(yīng)用服務(wù)器準(zhǔn)生產(chǎn)環(huán)境的人提供一個快速入門指南。 1. 引言 與大多數(shù)商用應(yīng)用服務(wù)器一樣,如果您計劃把WebSphere應(yīng)用服務(wù)器(以下簡稱WAS)用于正式的生產(chǎn)環(huán)境或用于性能測試、生產(chǎn)前檢驗的測試環(huán)境,除了簡單地安裝步驟外,您還需要做一些額外的檢查、規(guī)劃和配置,來確保您的WebSphere應(yīng)用服務(wù)器環(huán)境安全穩(wěn)定運行。 WebSphere應(yīng)用服務(wù)器各個版本之間安裝步驟差別不大,WAS V6.x版本比以前版本的安裝配置步驟中多了創(chuàng)建概要文件的過程,本文舉例的版本為V6.1。在閱讀本文之前,推薦讀者先了解安裝WebSphere應(yīng)用服務(wù)器的大致過程或相關(guān)概念。對于WebSphere應(yīng)用服務(wù)器各版本的具體安裝步驟,請參照WebSphere應(yīng)用服務(wù)器產(chǎn)品隨機安裝文檔以及WebSphere信息中心,DeveloperWorks上也有很多關(guān)于WAS環(huán)境搭建的參考文章,如:WAS5的安裝及其常見問題、在WAS6.0 ND中實現(xiàn)集群等,見參考資源。
2. 安裝前準(zhǔn)備 在搭建準(zhǔn)生產(chǎn)環(huán)境的過程中,好的準(zhǔn)備是成功的一半,推薦逐條進(jìn)行以下安裝前準(zhǔn)備工作。 2.1. 應(yīng)用服務(wù)器硬件配置 WebSphere應(yīng)用服務(wù)器能否順利安裝成功首先取決于目標(biāo)平臺是否滿足安裝的軟件和硬件條件。WebSphere應(yīng)用服務(wù)器對硬件配置的要求主要體現(xiàn)在待部署平臺的硬件架構(gòu)、CPU、內(nèi)存和磁盤存儲空間上,通常最低內(nèi)存要求在512M以上,根據(jù)硬件平臺、WebSphere應(yīng)用服務(wù)器版本、組件的不同,要求的配置也會略有區(qū)別,請參考WAS詳細(xì)系統(tǒng)需求 。磁盤空間的分配請參見“2.4 確認(rèn)磁盤空間是否滿足要求”。 2.2. 確認(rèn)操作系統(tǒng)版本是否滿足要求 作為一個成熟的商用應(yīng)用服務(wù)器,WebSphere應(yīng)用服務(wù)器會定期發(fā)布不同WAS版本(例如WAS V5.0, WAS V5.1, WAS6.0…)、組件(例如:Application Server, Edge Component)支持的操作系統(tǒng)版本信息。使用WebSphere服務(wù)器支持的操作系統(tǒng)平臺,能確保應(yīng)用服務(wù)器安裝、使用過程中環(huán)境的正常穩(wěn)定運行。尤其要注意的是,如果操作系統(tǒng)平臺不是IBM WebSphere應(yīng)用服務(wù)器官方支持的平臺,在WebSphere應(yīng)用環(huán)境出現(xiàn)問題后則無法獲得WebSphere應(yīng)用服務(wù)器的售后支持,更談不上解決問題了。 例如,在筆者寫這篇文章時,在x86芯片上,對于RedHat AS 4操作系統(tǒng),如果要安裝WebSphere應(yīng)用服務(wù)器V6.1的Application Server組件,則要求的操作系統(tǒng)版本是Red Hat Enterprise Linux AS, Version 4 with Update 2。如果您的操作系統(tǒng)版本是Red Hat Enterprise Linux AS, Version 4,則還需要安裝Update2,否則有可能遇到問題。 由于支持的操作系統(tǒng)版本是定期更新的,請在搭建WebSphere應(yīng)用服務(wù)器環(huán)境前,參照系統(tǒng)詳細(xì)需求去查看當(dāng)前操作系統(tǒng)版本(版本要與網(wǎng)上列出的完全一致)是否滿足WebSphere應(yīng)用服務(wù)器要求。 2.3. 確認(rèn)網(wǎng)絡(luò)配置/主機名滿足要求 在安裝WebSphere應(yīng)用服務(wù)器過程中,創(chuàng)建概要文件這一步驟需要用戶填入機器的主機名(如圖1),并且,WAS運行時也需要用到主機名(Host Name)。主機名是WAS安裝節(jié)點的物理機器的網(wǎng)絡(luò)名,它必須解析到服務(wù)器上的物理網(wǎng)絡(luò)節(jié)點。創(chuàng)建概要文件中WAS使用的主機名的值可以是全限定 DNS 主機名(例如: hosta.cn.ibm.com)、短主機名(例如:hosta),或甚至是數(shù)字 IP 地址(例如:192.168.1.3),但必須是WAS所在服務(wù)器實際配置的主機名。而且,當(dāng)WAS配置完畢投入使用之后,不推薦更改您設(shè)定的主機名,即使能改,過程也比較復(fù)雜。因此,根據(jù)實際經(jīng)驗,我們推薦用戶在安裝WebSphere應(yīng)用服務(wù)器之前配置主機名。如果采用全限定 DNS 主機名或短主機名,可以通過hostname命令來查看當(dāng)前系統(tǒng)的主機名。如果沒有配置,則到hosts文件中添加相應(yīng)的條目。 圖 1. 創(chuàng)建概要文件時填入主機名 - 常見問題1:在安裝WAS之后,更改了主機名,WAS無法正常啟動或停止,日志報錯:javax.naming.ConfigurationException: Cannot get canonical host name for server?;蛘邎箦e無法找到主機名xxx。因此,在創(chuàng)建WAS的概要文件之前,需要根據(jù)實際情況,選擇三種形式的主機名(全限定 DNS 主機名、短主機名或數(shù)字 IP 地址)中保持不變的那種主機名形式,作為WAS使用的主機名,在概要文件創(chuàng)建向?qū)В▓D1)中填入。如果您使用 DHCP或者如果您經(jīng)常更改 IP 地址,那么我們推薦在概要文件創(chuàng)建時使用全限定 DNS 主機名或短主機名;如果機器ip固定,而全限定 DNS 主機名或短主機名有可能更改,則在概要文件創(chuàng)建中使用數(shù)字ip。
- 常見問題2:如果您需要創(chuàng)建集群,請確保網(wǎng)絡(luò)配置中,除了保證本機主機名配置正確外,還必須保證集群所在機器之間互相能ping通主機名。否則集群創(chuàng)建中add node一步可能不成功。
2.4. 確認(rèn)磁盤空間是否滿足要求 考慮硬盤空間分配時,在UNIX或Linux平臺下可以用df –k 先查看各目錄大小。如果是在生產(chǎn)環(huán)境上安裝WebSphere應(yīng)用服務(wù)器,一般要從以下幾個方面來計算要預(yù)留的空間。 - WebSphere 應(yīng)用服務(wù)器自身代碼的占用空間。這個空間一般在1G左右,在不同的系統(tǒng)平臺上略有差異。應(yīng)在WAS安裝目錄下預(yù)留此空間。WebSphere應(yīng)用服務(wù)器在Linux下的默認(rèn)安裝路徑是 /opt/IBM/WebSphere/AppServer,在AIX下的默認(rèn)安裝路徑是/usr/IBM/WebSphere/AppServer(后面我們把此路徑簡稱為WAS_HOME)。用戶可以在安裝WAS時修改此安裝路徑。
- 概要文件所占的空間。WebSphere應(yīng)用服務(wù)器V6.1創(chuàng)建的概要文件基本類型有3種,每個概要文件所占用的空間如下:應(yīng)用程序服務(wù)器(Application Server):在WebSphere應(yīng)用服務(wù)器安裝沒有選擇安裝樣本程序時,這一概要文件所占磁盤空間約為200M;Deployment Manager:30M;定制概要文件(Custom,即node agent):10M。
- 如果要安裝WEB服務(wù)器,則在WEB服務(wù)器所在服務(wù)器上要預(yù)留WEB服務(wù)器所占的磁盤空間。IBM HTTP服務(wù)器一般占用110M左右的空間。
- 如果安裝WEB服務(wù)器,則在WEB服務(wù)器所在機器上通常也要安裝Web Server Plug-in組件,該組件所占磁盤空間約為200M。
- WebSphere 應(yīng)用服務(wù)器系統(tǒng)日志的占用空間。日志空間的估算要結(jié)合系統(tǒng)對日志的配置情況。WebSphere應(yīng)用服務(wù)器的主要日志有SystemOut.log,SystemErr.log。我們可設(shè)置日志文件的大小和保存的歷史日志文件數(shù)量,從而可以估算出其需要的空間。請參考“必要參數(shù)的調(diào)整”部分了解如何調(diào)整WebSphere應(yīng)用服務(wù)器日志參數(shù)。
- 如果有WEB服務(wù)器,需考慮WEB服務(wù)器的日志空間。如果客戶開啟了WEB服務(wù)器的訪問日志access.log(默認(rèn)開啟),此日志增長的速度極快,要預(yù)留足夠的空間。
- ? 備份文件需要的空間。WebSphere應(yīng)用服務(wù)器提供了一個備份命令(backupConfig.bat/sh),用來備份應(yīng)用服務(wù)器的配置及其上應(yīng)用。我們建議在系統(tǒng)穩(wěn)定之后及時備份。對于一個典型生產(chǎn)系統(tǒng),WebSphere應(yīng)用服務(wù)器這個配置文件經(jīng)常超過100M??稍诎l(fā)出backupConfig命令時,使用-logfile參數(shù)指定該備份文件的存放位置。
- 系統(tǒng)出錯時日志,例如,JVM在發(fā)生OutOfMemory時,在大多數(shù)平臺上WebSphere應(yīng)用服務(wù)器會默認(rèn)寫javacore文件和heapdump文件,記錄錯誤出現(xiàn)時的JVM Heap、線程情況,以備錯誤診斷使用。雖然可以調(diào)整應(yīng)用服務(wù)器參數(shù)使之不產(chǎn)生此類文件,但為了分析問題,通常需要從此類文件入手。這類文件通常都特別大,例如heapdump文件,可能達(dá)到幾百M。如果多次出現(xiàn)OutOfMemroy,對磁盤空間的占用很快。因此,必須考慮為此類文件預(yù)留磁盤空間。
- WAS安裝程序還需要在系統(tǒng)的臨時目錄/tmp中有100M以上的空閑空間。
- 用戶發(fā)布到WebSphere應(yīng)用服務(wù)器上所有應(yīng)用程序以及應(yīng)用自身的應(yīng)用日志的占用空間。這個大小與實際應(yīng)用相關(guān),而且不同應(yīng)用可以差別很大。
如要了解不同平臺具體的磁盤空間要求,請參考WAS V6.1信息中心“為產(chǎn)品安裝準(zhǔn)備操作系統(tǒng)”一節(jié)的內(nèi)容。 2.5. 針對特定操作系統(tǒng)的調(diào)整 前面提到WebSphere應(yīng)用服務(wù)器對支持的操作系統(tǒng)版本有明確要求,除此之外,WAS信息中心還對特定的操作系統(tǒng)版本安裝的包、內(nèi)核參數(shù)等有特殊要求。例如,對于RHEL AS4,信息中心中說明必須安裝compat-libstdc++-33-3.2.3-47.3.ppc.rpm包(這是保持 C++ 運行時兼容性所必需的,供諸如 GSKit 的組件、Java 2 軟件開發(fā)包(SDK)以及 Web 服務(wù)器插件使用)以及其他一些包。對于Linux、Solaris、HP等系統(tǒng),還需要調(diào)整一些相應(yīng)的內(nèi)核參數(shù)。請參照請WAS V6.1信息中心“為產(chǎn)品安裝準(zhǔn)備操作系統(tǒng)”一節(jié)的內(nèi)容。對于Solaris系統(tǒng),需要調(diào)整的參數(shù)列表列舉如下: set shmsys:shminfo_shmmax = 4294967295 set shmsys:shminfo_shmseg = 1024 set shmsys:shminfo_shmmni = 1024 set semsys:seminfo_semaem = 16384 set semsys:seminfo_semmni = 1024 set semsys:seminfo_semmap = 1026 set semsys:seminfo_semmns = 16384 set semsys:seminfo_semmsl = 100 set semsys:seminfo_semopm = 100 set semsys:seminfo_semmnu = 2048 set semsys:seminfo_semume = 256 set msgsys:msginfo_msgmap = 1026 set msgsys:msginfo_msgmax = 65535 set rlim_fd_cur=1024 | 2.6. 對于Linux/Unix系統(tǒng),確認(rèn)能啟動圖形界面 WAS的安裝可以使用人機交互的圖形界面安裝或批處理安裝(稱為靜默安裝,silent installation,預(yù)先寫好響應(yīng)文件,安裝過程中不需要啟動圖形界面或者人機交互)。如果使用圖形界面安裝,在服務(wù)器是Linux/UNIX平臺時,我們通常沒有機會直接使用服務(wù)器的顯示屏/控制臺,而是通過自己的機器telenet到服務(wù)器上去。這種命令行直接telnet的模式下,可能不支持啟動圖形界面,需要用到Xmanager、X-Win32等支持X Window的工具軟件。你可以在命令行下敲入命令xclock進(jìn)行測試。如果出現(xiàn)如圖2所示的圖形顯示,表明你能夠在你的終端上啟動圖形界面。 圖 2. 驗證能夠啟動圖形界面 2.7. 準(zhǔn)備合適的安裝介質(zhì) WAS是跨平臺的產(chǎn)品,不同的UNIX、Linux、Windows平臺、32位或者64位操作系統(tǒng)上,安裝介質(zhì)都是不一樣的,而且產(chǎn)品中包含了Application Server、Web Server、Edge Component等多種組件,當(dāng)搭建WebSphere環(huán)境時,您需要從訂購的WAS產(chǎn)品包(包括各個平臺、組件的多張CD)中選擇需要的安裝介質(zhì)。因此,安裝前我們需要根據(jù)安裝的WAS組件、操作系統(tǒng)版本、操作系統(tǒng)位數(shù),選擇所需要的介質(zhì)。例如,如果我們要在x86架構(gòu)、64位(注意,這里的64位是指操作系統(tǒng)是64位的)的Linux AS 4上安裝WAS,就應(yīng)該選擇WebSphere Application Server for x86 64-bit Linux的安裝介質(zhì);如果我們要安裝IBM Http Server或者update installer,這兩個組件都是在WebSphere Application Server Supplements CD中,同理,根據(jù)操作系統(tǒng)版本、位數(shù)、服務(wù)器的芯片,我們就可以選出所需要的介質(zhì)了。如果WAS安裝中需要打補丁,建議在安裝WAS前提前下載這些補丁以備安裝過程中使用。具體內(nèi)容在“打補丁”一節(jié)詳述。 2.8. 設(shè)計WebSphere環(huán)境的拓?fù)浼軜?gòu) 根據(jù)實際應(yīng)用場景的不同,我們需要決定WAS、Web 服務(wù)器分別裝在哪些服務(wù)器上,如果需要配置集群環(huán)境,還需要考慮Deployment Manager、各個結(jié)點和集群成員都分部在哪些服務(wù)器上。例如,如果我們要配置一個集群環(huán)境,安裝前,我們通常會先設(shè)計出如圖3的一張拓?fù)浣Y(jié)構(gòu)圖,以決定安裝中每臺服務(wù)器上實際安裝、配置的組件。例如,如圖3所示,圖中實線是運行時的請求流,虛線是WAS各組件間的控制流。我們可以看出,在hosta機器上,應(yīng)該安裝WAS組件,并創(chuàng)建Deployment Manager、NodeA概要文件,配置集群成員C1和C2;在hostb機器上,應(yīng)該安裝WAS組件,創(chuàng)建NodeB概要文件,配置集群成員C3和C4。在machine3機器上,應(yīng)該安裝IBM Http Server和Plug-in組件。其中,WAS集群的配置是非常方便的,可以在創(chuàng)建完概要文件之后靈活調(diào)整。 圖 3. 設(shè)計WAS拓?fù)浼軜?gòu) 2.9. 其他常見注意事項 其他一些常見注意事項還包括權(quán)限、端口控制等等。例如: - WebSphere應(yīng)用服務(wù)器在Unix/Linux系統(tǒng)上支持root用戶和非root用戶。但為了操作設(shè)置的簡便性,通常都會在root用戶下進(jìn)行。
- 有的生產(chǎn)系統(tǒng)對端口訪問有限制,或者系統(tǒng)中可以已經(jīng)占用了 WAS 即將使用的默認(rèn)端口,因此,需要更改WAS使用的端口(此任務(wù)將在“更改WAS使用的端口”中詳述)等等。
- 如果需要創(chuàng)建集群,請確保參與Cell環(huán)境的各臺機器之間時間一致、時區(qū)一致,建議誤差控制在秒級。否則在add node過程中可能不成功。
3. 安裝WebSphere應(yīng)用服務(wù)器 安裝WAS的過程非常簡單,通常分為3步:安裝WAS產(chǎn)品,為產(chǎn)品打補丁(如果有補丁),創(chuàng)建概要文件。如果您的環(huán)境很干凈,沒有一些特殊的限制,安裝過程大多數(shù)時候是點擊默認(rèn)的“Next”。當(dāng)然,根據(jù)環(huán)境的不同,通常會要注意以下方面: 3.1. 安裝WAS產(chǎn)品中的注意事項 使用圖形界面方式安裝WAS的過程十分簡單,通常不需要做特定的修改。下面列舉安裝中常見的一些注意事項和提高安裝速度的小竅門: - 通常,如果您的系統(tǒng)曾經(jīng)安裝過WAS產(chǎn)品,安裝WAS產(chǎn)品之前,建議停掉正在運行的WAS進(jìn)程。如果安裝IBM Http Server,通常最好停掉正在運行的Apache Http Server或者其他IBM Http Server進(jìn)程。在Unix/Linux系統(tǒng)上,可以用 ps –ef |grep java 命令,去查看當(dāng)前系統(tǒng)是否有was進(jìn)程,用 ps –ef |grep httpd 命令,去查看當(dāng)前系統(tǒng)是否有http server進(jìn)程在運行。
- 安裝WAS可以執(zhí)行l(wèi)aunchpad.bat/luanchpad.exe,啟動“啟動板”,從啟動板中點擊“啟動WebSphere Application Server的安裝向?qū)А薄H绻麩o法成功啟動“啟動板”,直接到安裝介質(zhì)目錄下的WAS目錄中,執(zhí)行install.exe/install.sh即可。
- 亂碼:啟動板或WAS安裝向?qū)э@示的語言與本地操作系統(tǒng)語言設(shè)置有關(guān)。如果本地操作系統(tǒng)語言設(shè)置為中文,則 WAS安裝向?qū)Ь蜁@示中文。如果發(fā)現(xiàn)向?qū)е姓Z言顯示為亂碼,可以先把本地操作系統(tǒng)語言設(shè)置為英文,使用英文語言安裝WAS。這樣安裝完畢的WAS仍然具有中文支持,不必?fù)?dān)心。在Unix/Linux平臺上,更改語言為英文使用下列命令: export LANG=en_US
- 安裝 WAS 過程中可以選擇是否安裝樣本應(yīng)用程序(samples),為了在開發(fā)環(huán)境和生產(chǎn)環(huán)境中都能獲得更高性能,請不要安裝樣本。通過省略樣本,可以將應(yīng)用程序服務(wù)器啟動時間縮短 60% 并節(jié)省 15% 的磁盤空間;可以節(jié)省相當(dāng)程度的進(jìn)程占用量;并且可以節(jié)省WAS產(chǎn)品安裝以及每次創(chuàng)建應(yīng)用服務(wù)器概要文件的時間。
- 一個可運行的 WAS 環(huán)境至少要包含一個概要文件。因此,WAS產(chǎn)品安裝過程中會讓用戶選擇要創(chuàng)建的初始概要文件。如果在安裝完WAS產(chǎn)品之后還要打補丁,建議此時先不要選擇創(chuàng)建任何初始概要文件(圖4),以節(jié)省打補丁所需的時間。如果在安裝期間未創(chuàng)建概要文件,安裝WAS產(chǎn)品結(jié)束后會顯示用于啟動“概要文件創(chuàng)建”向?qū)У倪x項。基于同樣原因,如果需要打補丁,我們將把創(chuàng)建概要文件這個工作放到打補丁之后進(jìn)行,因此此處不必選擇啟動“概要文件創(chuàng)建”向?qū)А?
圖 4. 安裝時不選擇創(chuàng)建初始概要文件 3.2. 打補丁 如果您使用的WAS版本已經(jīng)推出市場一段時間,根據(jù)用戶的測試和使用情況, WAS會定期公布補丁包(Fix Pack)或補丁(Fix)。建議先在測試環(huán)境中安裝補丁,確認(rèn)安裝的補丁不會對您的運行環(huán)境帶來負(fù)面影響,再將補丁安裝到生產(chǎn)環(huán)境中。一旦您經(jīng)過了適當(dāng)?shù)臏y試后,主動地安裝預(yù)防補丁,將避免一些可能導(dǎo)致您系統(tǒng)出故障的問題。WAS V6.x的補丁升級策略 了解補丁升級策略的詳情。并可以在IBM支持網(wǎng)站WAS補丁下載下載WAS補丁。 一般來說,WAS補丁的命名規(guī)范為:版本名-產(chǎn)品名-產(chǎn)品組件名-平臺名-補丁編號名.pak。例如,6.1.0-WS-WAS-SolarisSparc64-FP0000007.pak ,這是WAS V6.1的WAS組件針對Solaris Sparc64操作系統(tǒng)的FP0000007補丁。如果您安裝了WAS,就需要產(chǎn)品組件名為WASSDK和WAS的補丁;如果您安裝了IBM Http Server,就需要產(chǎn)品組件名為IHS的補??;如果您安裝了Plugin就需要產(chǎn)品組件名為PLG的補丁。通常,同樣補丁編號的補丁,先裝WASSDK補丁,再裝WAS補丁。以后,每一次打補丁的過程,都是: 1) 把補丁文件拷貝到補丁工廠安裝目錄的maintenance目錄下; 2) 在補丁工廠的安裝目錄下,執(zhí)行./update.sh命令啟動補丁工廠; 3) 在“安裝目錄”中選擇將要打補丁的組件的安裝目錄。通常,對WAS組件,補丁會自動識別出安裝位置;對于IBM Http Server(簡稱IHS)或者Plug-in這樣的組件,需要選擇正確的安裝位置; 4)在maintenance package selection頁面中選擇想要打的補丁。 3.3. 創(chuàng)建概要文件 概要文件是一組用于定義運行時環(huán)境的文件,每個概要文件都是一組完全隔離的運行時環(huán)境。前面我們提到了概要文件有三種基本類型。在創(chuàng)建概要文件的過程中,通常我們要了解以下細(xì)節(jié):
4. 必要參數(shù)的調(diào)整 在生產(chǎn)環(huán)境中安裝WAS完畢并創(chuàng)建了一個可用的概要文件之后,必須根據(jù)實際情況進(jìn)行必要參數(shù)的調(diào)整,以便提高WAS性能、方便錯誤診斷。這些參數(shù)通常要結(jié)合運行環(huán)境的實際情況、實際的并發(fā)量和服務(wù)器的資源利用情況進(jìn)行調(diào)整。完整的調(diào)優(yōu)涉及操作系統(tǒng)、應(yīng)用、應(yīng)用服務(wù)器和數(shù)據(jù)庫的綜合調(diào)整,具體要調(diào)整的參數(shù)、含義,請參見WAS資源中提到的資源監(jiān)控和性能調(diào)優(yōu)章節(jié),例如,紅皮書sg246392的17.5章節(jié)中明確談到了性能調(diào)優(yōu)通常涉及的參數(shù)以及調(diào)整原則。本文提出的只是針對應(yīng)用服務(wù)器本身一些重要的參數(shù)調(diào)整的指導(dǎo)原則和經(jīng)驗之談,以便讀者能夠快速起步: - Java虛擬機堆大?。↗VM Heap Size): 控制JVM代碼可使用的堆大小,單位M。該參數(shù)在服務(wù)器->應(yīng)用程序服務(wù)器>進(jìn)程定義>Java虛擬機中進(jìn)行設(shè)置。JVM最大堆大小默認(rèn)是256M,在生產(chǎn)環(huán)境中通常要根據(jù)機器物理內(nèi)存情況、應(yīng)用運行特性來設(shè)置,且多數(shù)情況下都要把此參數(shù)調(diào)大。根據(jù)經(jīng)驗,內(nèi)存充足時,通常的調(diào)整在500M到1024M之間。需要注意的是,建議JVM Heap的最大值不要超過1024M,如果JVM Heap Size過大,可能會引起內(nèi)存分頁,或者造成JVM垃圾回收時間過長,反而影響應(yīng)用服務(wù)器性能。有關(guān)Java虛擬機調(diào)優(yōu)的具體信息,請參考調(diào)整JVM參數(shù)。
- Web容器線程池:該參數(shù)在“服務(wù)器 > 應(yīng)用程序服務(wù)器 > server1 > 線程池”的“WebContainer”中進(jìn)行設(shè)置(如圖6),默認(rèn)值是10到50。如果硬件資源允許,通常會把線程池的最大大小調(diào)到100。
圖 6. 調(diào)整線程池
- 數(shù)據(jù)源連接池:該參數(shù)在資源->JDBC->數(shù)據(jù)源->數(shù)據(jù)源名稱,選擇“連接池設(shè)置”中設(shè)置,默認(rèn)大小為1到10。根據(jù)資源設(shè)置的隊列(Queue)原則,從Web容器線程池,到數(shù)據(jù)源連接池的參數(shù)設(shè)置,應(yīng)該是從大到小的管道。前面我們列舉了Web容器線程池的最大值設(shè)置100,對于數(shù)據(jù)源連接池,設(shè)置的最大值通常不超過50。多數(shù)情況下調(diào)整為30。實際運行中可以修改此參數(shù)值,觀察調(diào)整對性能是否有正面影響。注意,如果把數(shù)據(jù)庫連接池最大大小調(diào)得過大,JVM有限的資源都耗費在維護(hù)連接池、處理與數(shù)據(jù)庫連接上,可能反而造成WAS性能的下降。
- WAS 進(jìn)程日志參數(shù):WAS進(jìn)程日志常用的有SystemOut.log和SystemErr.log。這兩份日志默認(rèn)大小為1M,歷史日志文件數(shù)為1份。在生產(chǎn)環(huán)境中,這樣的設(shè)置通常不足以充分保存發(fā)生問題時的錯誤信息。我們可以通過修改日志默認(rèn)大小、歷史日志文件數(shù)來保存更多的信息。注意,不要把單份日志文件大小設(shè)置過大(例如,超過10M以上),否則可能影響WAS性能。另外,我們建議把應(yīng)用日志與WAS日志分離開。如果應(yīng)用中大量以System.out.print或者System.err.print來保存應(yīng)用狀態(tài)日志,也可能會影響服務(wù)器性能。
圖 7. 修改WAS日志屬性
- Heapdump文件:前面我們提到,Heapdump文件對磁盤空間占用很快,因此,可以設(shè)置IBM_HEAPDUMP參數(shù)把Heapdump文件存放到指定目錄下。
- Web服務(wù)器的訪問日志access.log:IBM Http Server的訪問日志access.log默認(rèn)是打開的,其中記錄了經(jīng)過Http服務(wù)器的請求信息。在高并發(fā)的系統(tǒng)中,這一日志增長非常過,當(dāng)日志過大時,可能占用過多磁盤空間或引起性能下降,如果您的系統(tǒng)不需要這份日志,或者有其他技術(shù)手段保存用戶訪問信息,可以關(guān)閉該日志。具體做法為:打開IBM Http Server安裝目錄/conf目錄下的httpd.conf文件,搜索CustomLog,把CustomLog所在行用#注釋掉即可。
5. 常見的日常管理任務(wù) 由于生產(chǎn)環(huán)境訪問控制的需要,搭建WebSphere環(huán)境之后,通??赡軙笮薷膽?yīng)用訪問端口,或者更改WAS管理員密碼,啟用/停用管理安全性等等。 5.1. 查看/更改應(yīng)用服務(wù)器端口 應(yīng)用服務(wù)器安裝完畢之后,為了避免生產(chǎn)環(huán)境中的端口沖突、端口訪問控制,有時我們需要查看或更改應(yīng)用服務(wù)器的端口。 - 查看端口
- 更改應(yīng)用訪問端口
默認(rèn)情況下,WAS的管理控制臺和應(yīng)用訪問是兩個不同的端口。訪問WAS的管理控制臺或者WAS上部署的應(yīng)用,所使用的端口由應(yīng)用服務(wù)器端口以及虛擬主機決定。假設(shè)我們要把應(yīng)用訪問的端口從9080變成9082(實際工作中,如果沒有Web服務(wù)器,有的環(huán)境會希望把應(yīng)用訪問端口變成80,方法類似),則按如下步驟進(jìn)行:登陸WAS管理控制臺,選擇 左邊菜單 服務(wù)器 - 應(yīng)用服務(wù)器,點擊 server1,選擇“端口”,點擊“WC_defaulthost”(如圖8),修改端口為自己想要的任意端口(注意避免端口沖突),例如,9082。然后點擊“確定”。然后“保存”。
圖 8. 修改應(yīng)用訪問端口
然后,選擇 左邊菜單 環(huán)境 - 虛擬主機,點擊”default_host”,選擇“主機別名”(如圖9),把原有端口9080改成與前面應(yīng)用服務(wù)器/端口/WC_defaulthost一致的端口,例如,9082。或者點擊“新建”,把在WC_defaulthost修改之后的端口號填入,點擊“確定”、“保存”。
圖 9. 修改虛擬主機
當(dāng)然,如果你在前面應(yīng)用服務(wù)器/端口/WC_defaulthost中設(shè)置的端口已經(jīng)出現(xiàn)在虛擬主機/default_host/主機別名的列表中,則不需要做改動或者新增主機別名端口的工作。目的就是要讓 應(yīng)用服務(wù)器/端口/WC_defaulthost的端口出現(xiàn)在 虛擬主機/default_host的主機別名列表中。更改在重啟WAS服務(wù)器之后生效。 - 更改WAS管理控制臺端口
登陸WAS管理控制臺,選擇 左邊菜單 服務(wù)器 - 應(yīng)用服務(wù)器,點擊 server1選擇“端口”。然后更改WC_adminhost為自己希望的管理控制臺端口。然后點擊“確定”、“保存”。選擇 左邊菜單 環(huán)境 - 虛擬主機,點擊;然后選擇admin_host,選擇“主機別名”。把原有端口9060改成與前面應(yīng)用服務(wù)器/端口/WC_adminhost一致的端口,例如,9063?;蛘唿c擊“新建”,創(chuàng)建一個主機別名 *, 9063。然后“確定”,“保存”。目的就是要讓 應(yīng)用服務(wù)器/端口/WC_adminhost的端口出現(xiàn)在 虛擬主機/admin_host的主機別名列表中。 5.2. 管理安全性 針對生產(chǎn)環(huán)境要求的多變性,實際WAS環(huán)境搭建中可能涉及管理安全性的多種操作。 - 啟用管理安全性
啟用管理安全性將激活用于防止未經(jīng)授權(quán)的用戶使用服務(wù)器的設(shè)置,簡單來說,進(jìn)入管理控制臺、更改應(yīng)用服務(wù)器配置、停止應(yīng)用服務(wù)器進(jìn)程這些管理任務(wù),都需要輸入預(yù)先定義的用戶名和密碼才能完成。缺省情況下,創(chuàng)建概要文件時會啟用管理安全性(圖9)。如果在創(chuàng)建概要文件時沒有選擇“啟用管理安全性”,在隨后使用過程中又希望啟用,則可按如下步驟進(jìn)行: 首先進(jìn)入控制臺,例如:http://was_ip:9060/admin,注意這里登陸的用戶一定要是設(shè)置安全性的用戶。例如,admin。選擇“安全性”>“安全管理、應(yīng)用程序和基礎(chǔ)結(jié)構(gòu)”,然后點擊“安全配置向?qū)А?圖10)。為了配置的簡便性,在“指定保護(hù)范圍”中,可以不選擇“使用 Java 2 安全性來限制應(yīng)用程序訪問本地資源”;在“選擇用戶存儲庫”中接受默認(rèn)選項,用戶存儲庫為“聯(lián)合存儲庫”,點擊“下一步”;在配置用戶存儲庫中填入用戶名、密碼。如果您是第一次啟用管理安全性,則輸入一個新的用戶名(您登陸管理控制臺的用戶名)和密碼。這個用戶名密碼是任意的,并不要求是操作系統(tǒng)用戶,因為聯(lián)合存儲庫默認(rèn)的用戶條目來自于文件;如果以前曾經(jīng)使用該存儲庫啟用過管理安全性,則使用存儲庫中持有管理員特權(quán)的用戶名和密碼。點擊“下一步”、“完成”。保存之后重啟應(yīng)用服務(wù)器,這時登陸管理控制臺等就需要提供您預(yù)定義的用戶名/密碼了。
圖 10. 配置管理安全性
- 停用管理安全性
停用管理控制臺很簡單,在圖10所示頁面,不選擇“啟用管理安全性”,點擊“應(yīng)用”,保存并重啟應(yīng)用服務(wù)器即可。有一種特殊情況下,特如忘掉了管理員密碼,此時我們無法登陸管理控制臺,從而無法在管理控制臺中停用管理安全性。這時,可從$WAS_HOME/profiles/xxx概要文件名/bin目錄下,發(fā)出如下命令: wsadmin -conntype NONE 。當(dāng)wsadmin的命令行窗口出現(xiàn)之后,發(fā)出下列命令: securityoff 。上述操作在應(yīng)用服務(wù)器啟動或停止的狀態(tài)都能發(fā)出。再次啟用WAS時,就是停用管理安全性的狀態(tài)了。 - 更改管理員密碼
當(dāng)我們需要更改管理員密碼時,可以選擇“用戶和組”>“管理用戶”,如圖11,在搜索內(nèi)容為“*”時點擊“搜索”,會列出該存儲庫中的所有用戶。選中管理用戶標(biāo)識,可更改該用戶的密碼。更改即時生效。
圖 11. 管理用戶
- 忘記管理員密碼
如果忘記管理員密碼,我們無法進(jìn)入管理控制臺更改密碼。此時,需要先用“停用管理安全性”一節(jié)中wsadmin命令的方法,停用管理安全性,然后“更改管理員密碼”,再次“啟用管理安全性”即可。 - 創(chuàng)建更多的管理用戶
使用啟用管理安全性的WAS環(huán)境時,默認(rèn)情況下只有一個管理員ID,這意味著同一時刻只有一個人能登陸管理控制臺。這對于多人開發(fā)小組在同一WAS環(huán)境發(fā)布測試時并不方便。您可先在存儲庫中創(chuàng)建一個用戶,然后為該用戶ID分配相應(yīng)的管理角色。具體步驟如下:1)選擇“用戶和組”>“管理用戶”,如圖24,點擊“添加”,添加一個用戶ID,例如,admin1。保存。 2) 選擇“用戶和組”>“管理用戶角色”,如圖25,填入用戶名(必須是在存儲庫中已經(jīng)存在的用戶名),選擇相應(yīng)的管理角色,例如,“管理員”。點擊“確定”,保存。這樣,下次重啟WAS時,兩個用戶都能同時登陸管理控制臺。
圖 12. 管理用戶角色
5.3. 備份/恢復(fù)概要文件 生產(chǎn)環(huán)境、概要文件配置過于復(fù)雜或經(jīng)常更改時,我們需要定期備份概要文件,以便必要時快速恢復(fù)。您可使用backupConfig 命令備份配置文件。例如,要備份概要文件AppSrv01的當(dāng)前配置,可以從$WAS_HOME/profiles/AppSrv01/bin目錄下,發(fā)出命令 backupConfig,它會將AppSrv01當(dāng)前概要文件默認(rèn)生成一個壓縮包,您也可以指定該壓縮包的名稱,例如:backupConfig WebSphereConfig_2007_05_30.zip?;謴?fù)配置時,使用restoreConfig WebSphereConfig_2007_05_30.zip。 5.4. 正確卸載WAS 需要提醒的是,WAS的卸載過程不是直接刪除目錄,如果這樣做,下次你可能無法在同一臺機器上成功安裝WAS。在卸載WAS之前,先停止機器上的WAS進(jìn)程,用ps –ef |grep java確保沒有was進(jìn)程在運行。然后,執(zhí)行WAS_HOME/uninstall/uninstall.sh命令卸載WAS。如果因為某些特殊原因卸載向?qū)б龑?dǎo)的卸載過程沒有成功(例如,您直接刪除了WAS安裝目錄),或者您希望在同一目錄再次安裝WAS,請參照信息中心“手工卸載”給出的建議。
6. 應(yīng)用的部署 應(yīng)用部署通常會涉及如下幾個任務(wù):配置應(yīng)用所需要的環(huán)境:如系統(tǒng)變量、虛擬主機、類路徑、安全性等等;配置應(yīng)用所需要的資源如JMS資源、數(shù)據(jù)源等。其中,需要注意的是: - 應(yīng)用打包:部署在 WebSphere 應(yīng)用服務(wù)器上的應(yīng)用可以是打包的*.ear/*.war文件,也可以是未打包但符合J2EE規(guī)范要求的組件。在生產(chǎn)環(huán)境中,推薦使用打包的*.ear/*.war文件,便于版本控制和管理。對于復(fù)雜項目中多個J2EE組件的打包,請參見文章“關(guān)于J2EE應(yīng)用開發(fā)項目包的管理”。
- 管理 Utility Jar包:大多數(shù)J2EE應(yīng)用都會有一些公用的Utility Jar包,首先要強調(diào)的是:一定要避免在同一個類載入路徑下存在同一個類的多個版本!這會在實際運行中帶來很多莫名其妙且難以診斷的問題。其次,對于JDBC驅(qū)動這類通用等級較高的Utility Jar包,可以放置在<WAS_HOME>/lib/ext目錄下;對于多個應(yīng)用共享的Utility Jar,可以放在 <WAS_HOME>/lib/ext中,也可以放在shared library(共享庫)中,推薦放在shared library中;對于單個應(yīng)用使用的Utility Jar,可與應(yīng)用打包在一起,或放入shared library中。共享庫的使用能夠避免Utility Jar包多個版本的混亂,以及Utility Jar包的沖突。共享庫配置方法請參見紅皮書sg247304 12.5.4 Step 4: Sharing utility JARs using shared libraries章節(jié)。
- Jar 包沖突:Jar包沖突問題在大型Java軟件開發(fā)中經(jīng)常遇到,簡單的說,當(dāng)不同應(yīng)用使用的公用Utility Jar包、應(yīng)用服務(wù)器底層的Jar包中存在同名、且版本不同的類時,我們稱之為Jar包沖突。這種問題的解決辦法可以參考文章如何在WebSphere中解決Jar包沖突 。
- 會話超時:針對應(yīng)用場景的不同,不同應(yīng)用期望的會話超時時間各不相同。WebSphere應(yīng)用服務(wù)器的會話管理分為Application server、Application、Web Module三個級別。顧名思義,在每個特定級別上更改的會話管理的配置,對當(dāng)前級別起作用。部署在WebSphere應(yīng)用服務(wù)器上的應(yīng)用,默認(rèn)的會話超時時間為30分鐘,默認(rèn)的會話管理級別是Application Server。如果您期望更改您的應(yīng)用,例如,DefaultApplication的會話超時時間,可按如下步驟進(jìn)行:選擇應(yīng)用程序>應(yīng)用程序名>會話管理(圖13),選擇“覆蓋會話管理”,并在“設(shè)置超時”中填上期望的會話超時時間。點擊“確定”保存即可。
圖 13. 會話管理
- 當(dāng)應(yīng)用需要通過寫Java環(huán)境變量的方式配置一些變量時,可在應(yīng)用服務(wù)器啟動腳本中用-D參數(shù)指定,也可以在應(yīng)用程序服務(wù)器 > 應(yīng)用程序服務(wù)器名(例如,server1) > 進(jìn)程定義 > Java 虛擬機中設(shè)置“通用JVM參數(shù)” -Daaa=xxx。
7. 結(jié)束語 當(dāng)在WAS環(huán)境中遇到問題時,最方便的是利用網(wǎng)上資源查閱相關(guān)資料。這方面的文章已經(jīng)太多,為了達(dá)到本文的目標(biāo):“為初級用戶提供一個盡量完整的快速入門指南”,我不得不在這里老調(diào)重談,請參照從何學(xué)習(xí) WebSphere? 了解WebSphere應(yīng)用服務(wù)器的常用網(wǎng)上資源。 了解WAS的過程是漸進(jìn)式的,希望這篇文章能夠在WAS安裝示例文檔和用戶的WebSphere生產(chǎn)環(huán)境搭建實踐之間提供一個過渡,節(jié)省您的時間。從工程師的角度看,遇到問題不是壞事,遇到問題越多,經(jīng)驗越多,查閱資料,并通過多種渠道獲得IBM的技術(shù)支持,相信您對WAS的使用體驗會更加美妙。
參考資料
關(guān)于作者 | | | Dan Wu,從事 WebSphere 應(yīng)用服務(wù)器及其相關(guān)工具的售前和技術(shù)支持工作,致力于WebSphere中間件產(chǎn)品在IBM合作伙伴及企業(yè)客戶中推廣普及。 | |