一種伺服器壓力測試的方法及裝置與流程
2023-05-23 18:20:36 1

本發明涉及伺服器測試領域,尤其是一種伺服器壓力測試的方法及裝置。
背景技術:
隨著網際網路技術的發展,對網際網路性能的要求也越來越高,因此對伺服器的要求也越來越高。伺服器是為網際網路用戶的客戶端提供各種服務的設備。伺服器承擔著數據的存儲、轉發等關鍵作用,是基於客戶機/伺服器模式網絡中不可缺的重要部分。因此伺服器應該具有可靠的持續能力、更強大的存儲能力和網絡能力、更快捷的故障恢復功能和更廣闊的擴展空間。為了保障伺服器能滿足網絡發展的需求,則需要對伺服器進行壓力測試。
通過壓力測試工具測試可以對伺服器進行壓力測試。當前有很多壓力測試工具,比如WebApplication Stress、ApacheBench、Apachejmeter等,可以模擬單一客戶端通過向伺服器發送請求的方式對伺服器進行壓力測試,並針對測試結果進行分析得到伺服器的性能瓶頸,比如伺服器的CPU使用率、內存佔用率、硬碟佔用率以及伺服器的響應時間、吞吐量等等,起到方便研發人員優化系統的目的。
實際應用中,在同一時刻上伺服器同時接收處理1000個請求與僅接收處理1個請求相比,伺服器網卡接收緩衝區、內存及CPU等資源所承受的壓力是不同的。通常,前者對伺服器造成的壓力更大,更容易使伺服器達到性能瓶頸。現有技術模擬單一客戶端對伺服器進行壓力測試,在同一時刻上只能向伺服器發送一個請求,這樣很難全方位的找出伺服器的性能瓶頸。若需要模擬多客戶端進行並發壓力測試,則需要人工手動啟動多個客戶端,這在時間上不能保證完全同步,無法解決多客戶端同步觸發的問題。
技術實現要素:
本發明提供了一種伺服器壓力測試的方法及裝置,能夠解決模擬多客戶端同步觸發對伺服器進行壓力測試的問題。
為了解決上述技術問題,一方面本發明提供了一種伺服器壓力測試的方法,包括:
啟動預設數量的控制臺,所述控制臺用於向伺服器發送測試請求以進行壓力測試,所述預設數量大於或等於二;
通過所述預設數量的控制臺同時向所述伺服器發送測試請求;
獲取所述伺服器的壓力測試結果;
輸出所述壓力測試結果。
另一方面,本發明還提供了一種伺服器壓力測試的裝置,包括:
啟動單元,用於啟動預設數量的控制臺,所述控制臺用於向伺服器發送測試請求以進行壓力測試,所述預設數量大於或等於二;
發送單元,用於通過所述啟動單元啟動的預設數量的控制臺同時向所述伺服器發送測試請求;
獲取單元,用於獲取由所述發送單元發送測試請求得到的伺服器的壓力測試結果;
輸出單元,用於輸出所述獲取單元獲取的壓力測試結果。
本發明提供的伺服器壓力測試的方法及裝置,能夠啟動至少兩個控制臺,並且通過預設數量的控制臺同時向伺服器發送測試請求,獲取並輸出伺服器的壓力測試結果。與現有技術相比,本發明中可以設定任意多個用於模擬客戶端的控制臺,並且同時觸發,使多個控制臺並發對伺服器施加壓力。既能滿足對伺服器壓力測試的需求,又能解決人工手動的觸發造成的時間不同步的問題。
上述說明僅是本發明技術方案的概述,為了能夠更清楚了解本發明的技術手段,而可依照說明書的內容予以實施,並且為了讓本發明的上述和其它目的、特徵和優點能夠更明顯易懂,以下特舉本發明的具體實施方式。
附圖說明
通過閱讀下文優選實施方式的詳細描述,各種其他的優點和益處對於本領域普通技術人員將變得清楚明了。附圖僅用於示出優選實施方式的目的,而並不認為是對本發明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
圖1示出了本發明實施例提供的一種伺服器壓力測試的方法流程圖;
圖2示出了本發明實施例提供的另一種伺服器壓力測試的方法流程圖;
圖3示出了本發明實施例提供的人機互動界面的示意圖;
圖4示出了本發明實施例提供的一種伺服器壓力測試的裝置的結構框圖;
圖5示出了本發明實施例提供的另一種伺服器壓力測試的裝置的結構框圖。
具體實施方式
下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現本公開而不應被這裡闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,並且能夠將本公開的範圍完整的傳達給本領域的技術人員。
本發明實施例提供了一種伺服器壓力測試的方法,如圖1所示,該方法包括:
101、啟動預設數量的控制臺。
所述控制臺,用於向伺服器發送測試請求以進行壓力測試,是指給伺服器發送請求的模擬客戶端。示例性的,在Windows系統下,對伺服器進行壓力測試,打開CMD(command,命令提示符)程序,在CMD中通過開源測試工具AB(ApacheBench,阿帕奇伺服器測試工具),並輸入相應的測試命令及測試參數,按下回車按鍵開始對伺服器進行壓力測試。打開的CMD程序即為一個控制臺。
在本實施例中,控制臺啟動時,在控制臺中自動地尋找測試程序執行目錄,並在測試程序的執行目錄中自動的輸入測試命令及測試參數。測試命令與測試參數的輸入方式,可以直接寫入程序代碼中,也可以通過人機互動界面輸入,在本實施例中,對測試命令與測試參數的輸入方式不做限定。
在本實施例中,要模擬多客戶端對伺服器進行壓力測試,所以要開啟多個控制臺。所述預設數量,是指測試者設置的控制臺個數,控制臺個數 的設置由伺服器的測試需求確定。本實施例中,控制臺的預設數量大於或等於二。
102、通過預設數量的控制臺同時向伺服器發送測試請求。
所述預設數量的控制臺,是指啟動的所有的控制臺,啟動控制臺的數量為預設數量。通過預設數量的控制臺同時向伺服器發送測試請求,即所有啟動的控制臺的測試請求是同時發出的。
只有通過多個控制臺同時發出測試請求才能對伺服器在同一時間的性能進行測試,才能更好地模擬現實環境中伺服器的真實使用情況,以便獲得更準確伺服器的運行情況。在本實施例中,要確保多控制臺發送的測試請求是並行的。
103、獲取伺服器的壓力測試結果。
獲取伺服器接收到控制臺發送測試請求時的狀態信息及處理情況等測試結果,包括伺服器的CPU使用率、內存佔用率、硬碟佔用率以及伺服器的響應時間、吞吐量等。在本實施例中,對伺服器壓力測試的結果類型與數量不做限定。
104、輸出壓力測試結果。
輸出由步驟103獲得的伺服器的壓力測試結果,壓力測試結果可以在控制臺對應的窗口中輸出,也可以在預先設計的人機互動界面中輸出測試結果。在本實施例中,對壓力測試結果的輸出方式不做限定。
本實施例提供的伺服器壓力測試的方法,能夠啟動至少兩個控制臺,並且通過預設數量的控制臺同時向伺服器發送測試請求,獲取並輸出伺服器的壓力測試結果。與現有技術相比,本實施例中可以設定任意多個用於模擬客戶端的控制臺,並且同時觸發,使多個控制臺並發對伺服器施加壓力。既能滿足對伺服器壓力測試的需求,又能解決人工手動的觸發造成的時間不同步的問題。
進一步的,作為圖1所示方法的細化和擴展,本發明實施例還提供了另一種伺服器壓力測試的方法,如圖2所示,該方法包括:
201、依次啟動每個控制臺,並在每啟動一個控制臺後對已啟動的控制臺進行計數。
在啟動控制臺之前,需要設置對伺服器進行壓力測試的測試命令與測試參數。測試參數包括但不限於客戶端數量、伺服器地址、單個客戶端請求數、客戶端請求類型、客戶端與伺服器的連接方式、單個客戶端每次並發數等。所述客戶端的數量,即為控制臺的預設數量。客戶端的請求類型包括但不限於點擊、曝光等類型。客戶端與伺服器的連接方式包括但不限於長連接、短連接等連接方式。根據測試參數通過程序控制生成對應的測試命令。
控制臺的啟動是通過在程序中編寫一個方法實現的,該方法模擬由外部輸入開啟控制臺的操作指令。
在控制臺啟動時,在啟動的控制臺中自動的寫入與測試參數對應的測試命令,並對已啟動的控制臺進行計數。
202、比較計數值與預設數量,若計數值是小於預設數量,則執行步驟203;若計數值等於預設數量,則執行步驟204。
203、啟動下一個控制臺,並將已啟動的控制臺掛起。
啟動下一個控制臺,與步驟201中啟動控制臺的方法相同,這裡不再贅述。所述掛起,為強制掛起,以減少啟動的控制臺對系統資源的消耗。將控制臺掛起,既能使控制臺快速響應,又能減少系統資源的佔用。
204、停止啟動控制臺。
停止啟動控制臺,是指不再開啟新的控制臺。因為已開啟的控制臺數量已達到預設數量,繼續執行步驟205,開始對伺服器進行測試。
205、通過預設數量的控制臺同時向所述伺服器發送測試請求。
通過預設數量的控制臺同時向伺服器分別發送預設請求數量的測試請求,預設請求數量為每個控制臺需要發送的測試請求數量。每個開啟的控制臺都向伺服器發送請求,每個控制臺發送的測試請求數量是在控制臺開啟之前設置的每個客戶端的預設請求數量。控制每個控制臺按照預設的並發數向伺服器發送預設請求數量的測試請求,並發數小於或等於請求數量。每個控制臺的並發數也是在控制臺開啟之前設置的。
在本實施例中,通過編寫多個控制臺同時調用同一方法的程序,實現對多個控制臺的控制,並且多個控制臺要能夠同時自動的執行發送指令。 示例性的,本步驟可以通過編寫一個模擬外部輸入的發送指令的方法,再使每個控制臺都調用該方法,以實現對多控制臺的控制。
206、獲取伺服器的壓力測試結果。
本步驟的實現方式與圖1步驟104的實現方式相同,此處不再贅述。
207、輸出壓力測試結果。
對於步驟206獲得的壓力測試結果,可以根據測試者對測試結果的需求輸出測試結果。一方面直接輸出每個控制臺反饋的伺服器壓力測試數值結果,另一方面可以將壓力測試數值與預設期望值進行比較,輸出比較後的壓力測試結果。
所述預設期望值,與其他測試參數一樣,在控制臺開啟之前設置。預設期望值中可以設定期望花費時間,若伺服器處理多客戶端的請求超過期望花費時間,可以設置命令反饋期望花費時間內伺服器對客戶端請求的處理情況。
下面通過一個示例對圖2所示方法進行說明。在該示例中,應用場景為網站中廣告投放給伺服器帶來的高並發、數據集中的壓力,需要模擬多客戶端對伺服器進行測試,以保證廣告投放後高質量、高效率的工作。測試參數與測試結果通過人機互動界面輸入與輸出,人機互動界面如圖3所示。
通過人機互動界面,輸入測試參數。測試參數包括所伺服器地址、監控對象ID、客戶端數量、單個客戶端請求數、客戶端請求類型、單個客戶端每次並發數、客戶端與伺服器的連接方式、期望花費時間及期望每秒吞吐量。所述監控對象ID,是指在網站頁面中某一條廣告。監控對象ID是根據該條廣告的投放時間、版面大小、投放位置等參數,經過數據處理得到的該條廣告的唯一標識。
輸入測試參數,伺服器地址為http://sports.sina.com.cn,監控對象ID為12095590365,客戶端數量為100,單個客戶端請求數為1000,客戶端請求類型為點擊,單個客戶端每次並發數為10,客戶端與伺服器的連接方式為長連接,期望花費時間為1000ms,期望每秒吞吐量為100。
輸入測試參數後,點擊人機互動界面的開始按鈕,程序在後臺執行,將測試參數中的「伺服器地址、測試位置、單個客戶端請求數、客戶端請 求類型、單個客戶端每次並發數、客戶端與伺服器的連接方式」轉化為命令語句,開啟第一個控制臺,將命令語句寫入控制臺,對已經開啟的控制臺計數,判斷是否達到客戶端數量100,若沒有到達則將控制臺掛起並開啟下一個控制臺,直至開啟的控制臺數量為100個。按照測試參數,100個控制臺同時向伺服器發送測試請求,與設置的單個客戶端每次並發數一致每個控制臺同時向伺服器發送10個測試請求,即在同一時刻向伺服器發送測試請求數為客戶端數量與單個客戶端每次並發數的乘積1000個。在測試過程中,控制臺向伺服器發送測試請求的次數為單個客戶端請求數與單個客戶端每次並發數的模100次。根據設置的期望花費時間,則最長的等待時間為1000ms。期望花費時間在點擊開始按鈕之後開始計時。若在期望花費時間1000ms內,伺服器完成測試請求,將測試結果在人機互動界面中輸出。若花費時間到達期望花費時間1000ms時,停止接收伺服器的反饋信息,將測試結果在人機互動界面中輸出。向伺服器發送測試請求,將測試結果在伺服器處理測試請求過程中,若需要停止發送測試請求,則點擊人機互動界面的停止按鈕即可。
在測試過程中,若伺服器的處理時間達到期望花費時間時還未處理完成測試請求,則發送中斷命令,讓伺服器停止對測試請求的處理,並返回當前的測試請求處理結果。
進一步的,作為對上述圖1與圖2所示方法的實現,本發明另一實施例還提供了一種伺服器壓力測試的裝置。該裝置實施例與前述方法實施例對應,為便於閱讀,本裝置實施例不再對前述方法實施例中的細節內容進行逐一贅述,但應當明確,本實施例中的裝置能夠對應實現前述方法實施例中的全部內容。如圖4所示,該裝置包括:啟動單元41、發送單元42、獲取單元43以及輸出單元44,其中,
啟動單元41,用於啟動預設數量的控制臺,控制臺用於向伺服器發送測試請求以進行壓力測試,預設數量大於或等於二;
發送單元42,用於通過啟動單元41啟動的預設數量的控制臺同時向伺服器發送測試請求;
獲取單元43,用於獲取由發送單元42發送測試請求得到的伺服器的壓力測試結果;
輸出單元44,用於輸出獲取單元43獲取的壓力測試結果。
進一步的,如圖5所示,啟動單元41,包括:
計數模塊411,用於依次啟動每個控制臺,並在每啟動一個控制臺後對已啟動的控制臺進行計數;
掛起模塊412,用於若計數模塊411統計的計數值小於預設數量,則啟動下一個控制臺,並將已啟動的控制臺掛起;
停止模塊413,用於若計數模塊411統計的計數值等於預設數量,則停止啟動控制臺。
進一步的,發送單元42,用於:
通過預設數量的控制臺同時向伺服器分別發送預設請求數量的測試請求,預設請求數量為每個控制臺需要發送的測試請求數量。
進一步的,發送單元42,用於:
控制每個控制臺按照預設的並發數向伺服器發送請求數量的測試請求,並發數小於或等於請求數量。
進一步的,如圖5所示,獲取單元43,包括:
獲取測試結果模塊431,用於獲取伺服器的壓力測試數值;
獲取比較結果模塊432,用於將所述獲取測試結果模塊431獲取的壓力測試數值與預設的期望數值進行比較,獲得壓力測試結果。
本實施例提供的伺服器壓力測試的裝置,能夠啟動至少兩個控制臺,並且通過預設數量的控制臺同時向伺服器發送測試請求,獲取並輸出伺服器的壓力測試結果。與現有技術相比,本實施例中可以設定任意多個用於模擬客戶端的控制臺,並且同時觸發,使多個控制臺並發對伺服器施加壓力。既能滿足對伺服器壓力測試的需求,又能解決人工手動的觸發造成的時間不同步的問題。
所述伺服器壓力測試的裝置包括處理器和存儲器,上述啟動單元41、發送單元42、獲取單元43和輸出單元44,等均作為程序單元存儲在存儲器中,由處理器執行存儲在存儲器中的上述程序單元來實現相應的功能。
處理器中包含內核,由內核去存儲器中調取相應的程序單元。內核可以設置一個或以上,通過調整內核參數來解決模擬多客戶端同步觸發對服 務器進行壓力測試的問題。
存儲器可能包括計算機可讀介質中的非永久性存儲器,隨機存取存儲器(RAM)和/或非易失性內存等形式,如只讀存儲器(ROM)或快閃記憶體(flash RAM),存儲器包括至少一個存儲晶片。
本申請還提供了一種電腦程式產品,當在數據處理設備上執行時,適於執行初始化有如下方法步驟的程序代碼:啟動預設數量的控制臺,所述控制臺用於向伺服器發送測試請求以進行壓力測試,所述預設數量大於或等於二;通過所述預設數量的控制臺同時向所述伺服器發送測試請求;獲取所述伺服器的壓力測試結果;輸出所述壓力測試結果。
本領域內的技術人員應明白,本申請的實施例可提供為方法、系統、或電腦程式產品。因此,本申請可採用完全硬體實施例、完全軟體實施例、或結合軟體和硬體方面的實施例的形式。而且,本申請可採用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限於磁碟存儲器、CD-ROM、光學存儲器等)上實施的電腦程式產品的形式。
本申請是參照根據本申請實施例的方法、設備(系統)、和電腦程式產品的流程圖和/或方框圖來描述的。應理解可由電腦程式指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些電腦程式指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理設備的處理器執行的指令產生用於實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些電腦程式指令也可存儲在能引導計算機或其他可編程數據處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的製造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些電腦程式指令也可裝載到計算機或其他可編程數據處理設備上,使得在計算機或其他可編程設備上執行一系列操作步驟以產生計算機 實現的處理,從而在計算機或其他可編程設備上執行的指令提供用於實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
在一個典型的配置中,計算設備包括一個或多個處理器(CPU)、輸入/輸出接口、網絡接口和內存。
存儲器可能包括計算機可讀介質中的非永久性存儲器,隨機存取存儲器(RAM)和/或非易失性內存等形式,如只讀存儲器(ROM)或快閃記憶體(flash RAM)。存儲器是計算機可讀介質的示例。
計算機可讀介質包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現信息存儲。信息可以是計算機可讀指令、數據結構、程序的模塊或其他數據。計算機的存儲介質的例子包括,但不限於相變內存(PRAM)、靜態隨機存取存儲器(SRAM)、動態隨機存取存儲器(DRAM)、其他類型的隨機存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)、快閃記憶體或其他內存技術、只讀光碟只讀存儲器(CD-ROM)、數字多功能光碟(DVD)或其他光學存儲、磁盒式磁帶,磁帶磁磁碟存儲或其他磁性存儲設備或任何其他非傳輸介質,可用於存儲可以被計算設備訪問的信息。按照本文中的界定,計算機可讀介質不包括暫存電腦可讀媒體(transitory media),如調製的數據信號和載波。
以上僅為本申請的實施例而已,並不用於限制本申請。對於本領域技術人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原理之內所作的任何修改、等同替換、改進等,均應包含在本申請的權利要求範圍之內。