摘 要:Client/server模式在電信、稅務、金融、航空售票等領域中發揮著很大的作用。當我們完成了一個Client/server系統的設計和編碼后,為了檢驗其在實際運用環境中能否承受一定的壓力,我們往往需要對系統進行壓力測試。
關鍵詞:Client/sewer 壓力測試
1 概述
CIlent/server是指一個完整的業務處理系統,根據其功能不同分為客戶端(client)和服務端(server)兩個部分。客戶端接收各種輸入信息(比如用戶通過鍵盤輸入的信息)后,通過網絡接口將請求發向服務端,服務端進行處理(很多情況下是數據庫操作)后,將信息返回客戶端,客戶端將結果進行輸出。
C1ient/server的優點是使多個前端程序實現了對服務端資源的共享,也就是可以有多個客戶端同時訪問一個服務端。客戶端程序更專注于數據的輸入和輸出,而服務端程序更專注于進行數據處理。
因為Client/server模式的上述優點,Client/server模式得以廣泛使用,特別是在電信、稅務、金融、航空售票等領域中發揮著很大的作用。
由于Client/server模式下是多個客戶同時訪問服務端,因此在服務端的設計和實現中,對前端發送請求的壓力是一個需要專門處理的問題。前端請求的壓力主要體現在兩方面:一是每個前端進程向服務端提交請求的速度;二是前端進程序的個數(即并發度)。
當我們完成了一個Client/server系統的設計和編碼后,為了檢驗其在實際運用環境中能否承受一定的壓力,我們往往需要對系統進行壓力測試。
2 壓力測試系統結構
壓力測試主要在于測試服務端的性能,因此需要編制模式客戶端程序,通過模式客戶端程序向服務端發請求,通過數據記錄和分析來得出系統承受壓力的性能功能。
由于模式客戶端的功能是向服務端發送請求,因此可以不考慮輸入輸出界面,只需專注于請求發生的頻率和前端程序的并發度控制。
3 請求發生速度控制
模式前端程序往往是一個循環,可以在循環中加入sleep來控制發送請求的頻率,而sleep的參數可以調節,這樣就可以對發送頻率進行控制了。
一般來說,客戶端發送交易不應無限制的快,因為這樣服務端往往不能正常工作,也就測不出其性能來了。
4 請求端并發度
由于服務端的性能是有一定限度的,所以客戶端的并發度也要有控制,不能無限制地并發。我們可以通過對產生的子進程進行計數來控制并發數,當此計數達到一定值時停止并發。當然此并發度上限值需要進行配置。
5 服務端并發度
服務端的性能(比如每秒處理請求數)往往與機器的性能(如CPu、內存、(O)有很大關聯。為了支持客戶端的并發訪問,服務端必須要并發地進行處理。但并不是并發度越高,系統性能越好。所以服務端的并發度要能夠控制。通過調整服務端的并發度,可以利用并發度與性能的關系,從而選定一個優秀的并發度數值。
6 性能監控
測試時,通過前端發送一定量的請求來記錄時間。從比較小的頻率和并發度開始,逐步加大頻率和并發度,直到出現系統錯誤,或頻率無法再提高,或達到系統資源上限,從而得到一個請求速度的上限。在此過程中,需要監控服務機系統資源占用情況,比如CPU占用、內存占用等。在系統資源許可的條件下,通過發送一定數量的交易,記錄發送頻率、并發度與總時間的關系,就可以分析出系統承受壓力的性能。