版權聲明:本文為部落客chszs的原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/chszs/article/details/1544657
J2EE性能測試(1)
1、問題:
1)應用程式的運作有多快?
2)它将适用于多大的規模?
3)應用程式伺服器的性能是什麼?
2、The Grinder的負載生成/資料收集工具
The Grinder是一個基于Java的工具。
3、J2EE性能測試
1)性能測試一個完整的應用程式;
2)性能設計——分析J2EE API不同方面的性能代價,以及某種設計決策對總體性能的影響。
性能依賴于應用程式以及性能的确切含義。
J2EE是一組廣泛的API,甚至一個相對簡單的J2EE應用程式都可以以多種方式編寫。
前端:有一組JSP和servlet處理與終端使用者或用戶端的通信,或是将通路委托給一個實體bean;
前端可使用JDBC與資料庫通信;
開發人員可選擇讓該前端調用一個無狀态的會話bean;
然後該無狀态的會話bean使用JDBC API與資料庫通信,或者是将該通路委托給一個實體bean;
實體bean可以使用容器管理的持久性(Container-Managed Persistence,CMP)或者是Bean管理的持久性(Bean-Managed Persistence,BMP)等。
4、擷取清晰的真實的有關性能的答案的唯一方法是,在你自己的特定環境中親自測試它。
1)互動式應用程式:性能一般是通過大小和規劃問題的容量來定義,如應用程式能夠處理的同時發生的使用者數量。
從終端使用者的角度看,關鍵的性能屬性是響應時間。
響應時間直接受到同時與應用程式互動的使用者數的影響。
随着使用者負載的增加,測試應該指出工作繁忙的硬體系統元件,可反過來告知如何在應用程式伺服器、資料庫伺服器和網絡之間最佳的分割硬體預算資源。
該資訊還能夠幫助确定最優的部署配置。
前端(servlet和JSP)可以運作在一個應用程式伺服器上,而事務邏輯(EJB、JMS隊列)運作在另一個伺服器上。
2)後端應用程式
當應用程式的主要接口是面向使用者時,基于響應時間和使用者數的性能陳述是有意義的;當應用程式具有與另一個系統的接口時,需要:
吞吐量來衡量。
表達吞吐量性能最流行的方式之一是每秒的事務處理(Transactions per Second,TPS)。
使用吞吐量必須清楚地說明了上下文。
在研究servlet時,我們定義事務處理為一個請求——是以吞吐量是servlet在一個設定的時間周期内(一秒)執行的同樣請求的數量。
當分析JMS時,吞吐量就是消息(message)。
注意:吞吐量不是一個速度測度,而是一個容量(capacity)測度。
吞吐量并不總是提供應用程式性能的完整描述。
5、上下文測試方法
1)基準測試(Benchmarking):是在各種不同的環境和工作負載下記錄應用程式性能的過程;
2)輪廓(Profiling):涉及到精确地調查應用程式将大部分計算周期花費在什麼地方,以及應用程式如何高效地使用系統資源;
3)調整(Tuning):測試、基準測試和輪廓都回報給調整過程,後者是優化應用程式和環境擷取最大性能的過程;
6、基準測試
ORACLE資料庫——輪廓工具SQL_TRACE和TKPROF;
WEBLOGIC伺服器——WEBLOGIC控制台檢視起内部情況;
J2EE應用程式——Introscope和JProbe輪廓工具來幫助準确查明應用程式中元件級的瓶頸。
7、調整
一個典型的J2EE應用程式将建立在一個應用程式伺服器的基礎上,此外,還有資料庫、Java虛拟機(JVM)、作業系統、TCP/IP堆棧、Web伺服器、網絡、路由器和現行的計算機硬體。