響應時間很明顯地隨著線程的增加而增加。若要繼續進行測試,我們可以更改線程數、等候周期和循環數。注意:我們沒有更改或調整服務器的配置。WebLogic Server 9.0中有一個可自動配置的線程池,其配置范圍受到限制(請參閱Naresh Revanuru撰寫的 Workload Management in WebLogic Server 9.0 ,Dev2Dev),上表說明客戶端數量的增長對服務器響應時間的影響是非線性的。實際上,將這個數字提高兩倍或十倍不會產生明顯的影響!然而,使用接近或超過默認服務器限制的線程數來運行同一個試驗時應引起注意。為了檢驗從服務器收到的響應是真實的SOAP響應而不是HTTP錯誤,我們觀察下列輸出文件的內容。這是符合上面要求的SOAP響應:
為了使測試結果更加可視化,向計劃中添加Spline Visualizer,它緊靠著Graph Results。Spline Visualizer提供了關于所有樣本次數的視圖。它用分段插入功能繪制出一條連續的線,在繪制時跨越10個點,每個點代表10?的樣本。在樣條圖表中用直線取代連接點,提供了基于多項式近似算法的平滑分布視圖。結果如圖7所示
圖7:使用Spline Visualizer說明與圖6相同測試結果的圖表
Multiple JMeters
JMeter還具有一項十分有用的Remote Start功能,它允許用戶從多臺機器啟動JMeter測試。客戶端主機地址可以輸入到位于bin文件夾下的“jmeter.properties”文件中。找到remote_hosts屬性并在那里添加遠程主機名稱,使用逗號進行分隔。重新啟動Jmeter,在Run菜單中單擊Remote Start或Remote Start All。某些Web和應用程序服務器可連續處理同一個IP地址的多個請求以及并行處理不同IP地址的請求,因此,對于請求來自不同的機器或將測試負載分布到幾個客戶端顯得十分關鍵的情況,可以使用該選項來執行操作。
其他功能
前面已經提到,Jmeter包含HTTP、FTP和 LDAP取樣器。創建這些請求是一項簡單的任務,Jmeter用戶手冊中作了詳細說明;它通常包括創建Thread Group、添加取樣器、定時器和監聽器。下面我們介紹一些有關這些標準取樣器之外的、可能需要一些非標準配置步驟的功能。
腳本
特別支持Java請求和BeanShell腳本的自定義測試和腳本是JMeter的另一個功能,它為負載測試開發人員提供了更大的靈活性。我們可以創建腳本化測試并將其作為一個Java類進行編譯,然后將其傳遞給JMeter運行。為了使用BeanShell腳本功能,需要下載BeanShell jar并將其放置在/lib目錄下面,以便JMeter在運行時可以選取它。用戶可以使用Java取樣器中的beanshell API,或者創建BeanShell取樣器,由它讀取文件中的腳本或處理文本框中所鍵入的命令。下面的代碼樣本說明了添加到HTTP取樣器中的BeanShell斷言。用戶可以對基于HTTP請求的響應的測試執行過程進行分析和控制。一個好的方案應該創建具有線程組的測試計劃,并在計劃的時間循環啟動負載測試。請求將點擊Web服務器并獲得其響應。
響應可用添加到測試計劃的BeanShell斷言進行記錄,它緊靠著HTTP取樣器,如果Web服務器響應與某個條件相匹配,也是說,如果成功或包含了預期的字符串,則腳本會停止測試或線程,否則將繼續執行。
JMS應用程序
為了使用JMeter對JMS應用程序進行負載測試,要下載ActiveMQ jar并將其復制到/lib目錄。根據前面的測試,我們首先創建線程組,并添加JMS Point-to-Point樣本。JMS Point-to-Point對話框需要填寫下列參數:QueueConnection Factory、JNDI Name Request隊列和JNDI Name Receive隊列。例如,我們可以使用WebLogic示例服務器上安裝的JMS模塊中的參數;在這種情況下,它們為weblogic.examples.jms.QueueConnectionFactory和weblogic.examples.jms.exampleQueue。我們也可以創建自定義的JMS連接工廠和隊列。對于WebLogic服務器,我們還需要添加 weblogic.jndi.WLInitialContextFactory作為初始Context Factory值和Provider URL,通常情況下,其形式為:t3://hostname:7001,例如:t3://localhost:7001。