要做好性能測試,首先我想必須要了解影響性能的幾個因素。
參閱了各種資料,關於性能方面有太多的學問。我想做個小的總結。
從程序設計,時間上來說,分為數據傳輸時間,數據存儲時間和數據處理時間。
因此,針對時間上的,我們可以考慮以下的方法來提高性能:
1)降低算法本身的復雜性【比如,將復雜對象轉化為聚合關系:將一個復雜類拆分成由兩個或兩個以上的類通過聚合關系形成的新類】;
2)傳輸時間:如果不同處理器之間的數據傳輸成為影響性能的主要瓶頸,則應重新審查對象在不同處理器上的分布問題。調整的目標,一是減少不同處理器之間數據的傳輸量, 二是縮短數據傳輸的路徑;
3)存取時間:如果系統執行某些功能時,需要大量地頻繁地訪問外部存儲設備,那么在面向對象設計方法中可以在內存空間中設計一個緩存空間,這樣那些經常被使用的數據就會有較多的機會存儲於緩存空間當中;
4)處理時間:對象的封裝性導致對象的屬性不能被另一個對象的服務直接訪問,只能通過消息傳遞來完成。若存在這樣一些消息傳遞頻繁的類,就可以采用合並方法將其合並為一個類;另外可以在程序設計中,增加一些屬性來減少重復計算量。
從系統性能幾個指標上來看,包括:響應時間、吞吐量、用戶並發數、資源利用率
1)響應時間:指系統對用戶請求作出響應的時間。
從用戶的角度,響應時間=呈現時間+系統響應時間。呈現時間也就是客戶端的瀏覽器在接收到網站發來的數據時呈現頁面所需的時間。系統響應時間就是客戶端提出用戶 請求到客戶端接收到服務器發來的數據所需的時間。顯然,我們測試一個系統軟件性能時,呈現時間是與客戶端本身硬件條件和瀏覽器有關,我們更關心的是系統響應時間。
那么我們現在就來看看系統響應時間。可以這樣看,系統響應時間=應用服務器處理時間+數據庫服務器處理時間+網絡數據傳輸時間。
這樣分析下來,我們就能很清晰地看出影響響應時間的幾個主要因素了。
2)吞吐量:指的是系統在單位時間內處理請求的數量。
對於單用戶的系統而言,響應時間可以很好地度量系統的性能,但對於並發系統,吞吐量常最為比較好的性能指標。系統的吞吐量越大,說明系統在單位時間內完成的用戶 或系統請求越多, 系統的資源得到充分利用。
吞吐量=並發數/平均響應時間
3)並發用戶數:指系統可以同時承載的正常使用系統功能的用戶的數量。
並發用戶數常用來度量服務器並發容量和同步協調能力。這個指標是看系統運行期間同一時刻進行業務操作的用戶數量。該數量取決於用戶操作習慣、業務操作間隔和單筆 交易的響應時間。使用頻率較低的應用系統並發用戶數一般為在線用戶數的5%左右。使用頻率較高的應用系統並發用戶數一般為在線用戶數的10%左右。
對於網站系統,會有三個關於用戶數的統計數字:注冊用戶數、在線用戶數和同時發請求用戶數。我們關注的一般是后兩個數字。
4)資源利用率:反映的是在一段時間內資源平均被占用的情況
對於數量為1的資源,資源利用率可以表示為被占用的時間與整段時間的比值;
對於數量大於1的資源,資源利用率可以表示為在該段時間內平均被占用的資源數與總資源數的比值。
常見的系統資源包括:CPU、內存、磁盤、網絡等等。
先總結這么多,后面還會繼續更新。
Feel free to tell me if you have any questions and suggestions.
