一. 引言
性能測試與分析是軟件開發過程中介于架構和調整的一個廣泛并比較不容易理解的領域,更是一項較為復雜的活動。就像下棋游戲一樣,有效的性能測試和分析只能在一個良好的計劃策略和具備了對不可預料事件的處理能力的條件下順利地完成。一個下棋高手贏得比賽靠的不僅僅是對游戲規則的認識,更是靠他的自己的能力和不斷地專注于分析自己對手的實力來更加有效地利用和發揮規則的作用。同樣一個優秀的性能測試和分析人員將要面對的是來自一個全新的應用程序和環境下帶來的整個項目的挑戰。本文中作者結合自己的使用經驗和參考文檔,對Tomcat性能方面的調整做一簡要的介紹,并給出Tomcat性能的測試、分析和調整優化的一些方法。
二. 測量Web服務器的性能
測量web服務器的性能是一項讓人感到畏縮的任務,但是我們在這里將給出一些需要注意的地方并且指點你了解其中更多的細節性的內容。它不像一些簡單的任務,如測量CPU的速率或者是測量程序占用CPU的比例,web服務器的性能優化中包括許調整許多變量來達到目標。許多的測量策略中都包含了一個看似簡單的瀏覽實際上是在向服務器發送大量的請求,我們稱之為客戶端的程序,來測量響應時間??蛻舳撕头掌鞫耸窃谕慌_機器上嗎?服務器在測試的時候還運行著其它的什么程序嗎?客戶端和服務器端的通訊是通過局域網,100baseT,10baseT還是使用調制解調器?客戶端是否一直重復請求相同的頁面,還是隨機地訪問不同的頁面?(這些影響到了服務緩存的性能)客戶端發送請求的有規律的還是突發的?你是在最終的配置環境下運行服務的還是在調試的配置環境下運行服務的?客戶端請求中包含圖片還是只有HTML頁面?是否有請求是通過servlets和JSP的,CGI程序,服務端包含(Server-Side Includes ,SSI是一個可以讓你使用動態HTML文件的技術)?所有這些都將是我們要關心的,并且幾乎我們不可能精確地把所有的問題都清楚地列出來。
1.壓力測試工具
“工欲善其事,必先利其器”,壓力測試只有借助于一些工具才可得以實施。
大多數web壓力測試工具的實現原理都是通過重復的大量的頁面請求來模擬多用戶對被測系統的并發訪問,以此達到產生壓力的目的。產生壓力的手段都是通過錄制或者是編寫壓力腳本,這些腳本以多個進程或者線程的形式在客戶端運行,這樣通過人為制造各種類型的壓力,我們可以觀察被測系統在各種壓力狀況下的表現,從而定位系統瓶頸,作為系統調優的基礎。目前已經存在的性能測試工具林林總總,數量不下一百種,從單一的開放源碼的免費小工具如 Aapache 自帶的 web 性能測試工具 Apache Benchmark、開源的Jmeter 到大而全的商業性能測試軟件如 Mercury 的 LoadRunner 等等。任何性能測試工具都有其優缺點,我們可以根據實際情況挑選用最合適的工具。您可以在這里找到一些web壓力測試工具http://www.softwareqatest.com/qatweb1.html#LOAD
這里我們所使用的工具要支持web應用服務認證才可以,要支持接收發送cookies,不僅如此Tomcat支持多種認證方式,比如基本認證、基于表單的認證、相互認證和客戶端認證,而一些工具僅僅支持HTTP基本認證。真實地模擬用戶認證是性能測試工具的一個重要的部分,因為認證機制將對一個web站點的性能特征產生重要的影響?;谀阍诋a品中使用的不同的認證方式,你需要從上面的工具列表中選擇使用這種特性的測試工具。
Apache Benchmark和http_load是命令行形式的工具,非常易于使用。Apache Benchmark可以模仿單獨的URL請求并且重復地執行,可以使用不同的命令行參數來控制執行迭代的次數,并發用戶數等等。它的一個特點是可以周期性地打印出處理過程的信息,而其它工具只能給出一個全局的報告。
2.壓力測試工具介紹
三. 外部環境的調整
在Tomcat和應用程序進行了壓力測試后,如果您對應用程序的性能結果不太滿意,就可以采取一些性能調整措施了,當然了前提是應用程序沒有問題,我們這里只講Tomcat的調整。由于Tomcat的運行依賴于JVM,所以在這里我們把Tomcat的調整可以分為兩類來詳細描述:
外部環境調整
調整非Tomcat組件,例如Tomcat運行的操作系統和運行Tomcat的java虛擬機。
自身調整
修改Tomcat自身的參數,調整Tomcat配置文件中的參數。
下面我們將詳細講解外部環境調整的有關內容,Tomcat自身調整的內容將在第2部分中闡述。1.JAVA虛擬機性能優化
Tomcat本身不能直接在計算機上運行,需要依賴于硬件基礎之上的操作系統和一個java虛擬機。您可以選擇自己的需要選擇不同的操作系統和對應的JDK的版本(只要是符合Sun發布的Java規范的),但我們推薦您使用Sun公司發布的JDK。確保您所使用的版本是最新的,因為Sun公司和其它一些公司一直在為提高性能而對java虛擬機做一些升級改進。一些報告顯示JDK1.4在性能上比JDK1.3提高了將近10%到20%。
可以給Java虛擬機設置使用的內存,但是如果你的
原文轉自:http://www.anti-gravitydesign.com