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