亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

調整壓力測試工具

2019-11-18 16:10:47
字體:
來源:轉載
供稿:網友
    您是否曾經不得不對應用程序進行壓力測試,而最后卻發現不明白結果表明什么意義?也許問題不是出在應用程序上。也許問題出在配置壓力測試工具的方式上。如果您曾經經歷過這種情況,或者正要進行壓力測試,您就需要考慮以下幾個方面。

如何進行測試?

  我經常遇到一些開發團隊,他們收到諸如“客戶端將每小時處理20個客戶”此類的性能需求。團隊就試圖把該需求轉化為某種測試。執行這種測試的常見方法就是以死循環的形式對服務器進行反復請求,然后靜觀其效。通常事情進行得不是很順利,這就是為什么隨后我會作為一個性能專業化方面的顧問“遇見他們”的原因。通常我問的第一個問題是:“您是如何進行測試的?”一般來說,答案會是:“我們將請求置于循環中,然后計算服務器可以處理的請求的數目?!闭沁@種回答使我明白首先要做的就是調整測試工具本身。

  如果您不明白上述測試有什么問題,不要擔心——有很多人和您一樣。進行一次切實可行的壓力測試并不像乍看之下那么簡單。遇到的問題可能非常微妙,而且通常只有采用不那么簡單的方法來理清情況才能看清問題。但是這并不是讓您目光呆滯地深入研究馬爾可夫鏈(Markov chains)、狀態改變模型、排隊理論、概率分布等等,讓我們以一種不那么乏味的、更通俗易懂的方式來說明如何解決這個在許多壓力測試中出現的常見問題。

測試方式將影響測試

  我們首先要明白的是,雖然測試通常都是從客戶端活動的角度定義的,但是它們必須從以服務器為中心的視角來看待。以服務器為視角將只看到客戶端訪問的頻率和處理每個請求所花費的時間。讓我們考慮一個典型例子,即銀行的出納員。出納員通常不知道您是什么時候到的,也不知道您是從哪里來的。他們所知道的只是您在這里,而且您要讓他們為您做一些事情?,F在,隊列中有多少人將取決于人們到達的速度,以及滿足他們的要求所花的時間。

  比隊列中有多少人更重要的是,隨著后來的人不斷補進隊列,房間中的人數是在減少、保持不變還是在增加?與之相隨的另一個問題是,人們進入隊列的速度與離開的速度相比,是快一些、相同還是慢一些?如果離開的速度要比到達的速度快,那么處理請求的速度要比遞交請求的速度快。第二種情況說明剛剛處理完一個客戶,下一個就到達了。最后一種情況則說明人們到達的速度要比處理的速度快。用數學術語來說,第一種系統是收斂的,第二種處于穩定狀態,第三種則是發散的。這三種情況中房間中的人數都是由利托氏定理(Little's Law)決定的。

只做力所能及的

  對于外行來說,利托氏定理說明了您只能做這么多工作。其數學版本是這么說的:系統中的請求數等于請求到達的速度乘以它們在系統中的時間所產生的積。如果它們在系統中的時間取決于流出系統的速度(通常稱為服務時間),那么就可以通過觀察請求到達的頻率(請求到達間隔時間)并與服務時間比較,而確定系統處于哪種狀態。

  對于每種情況,利托氏定理都描述了系統是如何處理工作負載的。雖然狀態可能會發生瞬時的迸發和間歇,總體的趨勢還將由平均的狀況決定。例如,在收斂系統中,可能會由于許多人同時進入隊列而產生瞬時的暴漲,但是隊列仍將會騰空,因為收斂系統的傾向就是趨向空閑。但是,第三種場景是發散的,其中的請求數將會無限增長。它會嗎?這個問題的答案與如何定義發出請求的全域有關。

  在某個隨機的時間點,全域中的用戶將發出一個請求。這肯定是從以服務器為中心的視角來看全域了。大多數系統都基于一個假設,即在任一個給定的時間點,全域中只有一部分會發出請求。經驗告訴我們,在許多因特網應用程序中,全域中有10%在任意時間點都是活動的。我們需要知道這種信息,如果我們要定義實際的壓力測試的話。例如,如果全域中有1000個用戶,我們會預料有100個每時每刻都在使用系統。由于我們估計會有10%的并發使用,用戶庫又有1000個用戶,所有我們的測試應該模擬100個用戶重復執行一些請求系列。用這種方法定義測試的危害是它反映的是客戶端的視角。

  當我們從以服務器為中心的視角轉向以客戶端為中心的視角后,就看不到向服務器發送請求的速度了。如果我們限制或固定為執行用戶請求所分配的用戶(線程)數目,那么就看得更模糊了。在這種情況下進行測試,我們將看到服務器正在處理穩定的請求流,而處理請求的時間似乎越來越長。

每個人都可以參與

  如果我們讓模擬線程盡可能快地發出請求,就是在模擬整個全域(甚至更多)的用戶都在同一時間發出請求。我們假定服務器模型為單一的,因為這樣便于理解;多服務器模型的工作方式是相同的,只是更快一些。系統將把請求排隊,并且每次只處理一個。一旦有一個請求清除,線程會立即返回隊列頭部發出下一個請求。雖然這種事件順序似乎說明我們處理的是一個穩定狀態的系統,但我們實際上是在處理發散系統。它之所以看起來像穩定狀態系統的惟一原因是,我們限制了發出請求的線程數目。正如前面所提到的,在發散系統中,每個后繼用戶的響應時間都要比前一個所經歷的時間長。這意味著平均響應時間將不斷地增長而沒有限制。盡管如此,但是我們人為地限制了客戶端的數目,因此平均響應時間將穩定在一個點上,該點取決于客戶端數目與處理單個請求所花費時間的乘積。這里所說的這種系統中的響應時間包括花在隊列中的時間,而且因為花在隊列中的時間比預料的要少,所以我們又人為擴大了測量值。最終結果是您的測試限制了您確定系統的可伸縮性的能力。

如何修復

  要修復壓力測試,需要知道用戶/線程發出請求的速度。所有用戶的速度之和就轉化為服務器接受請求的速度。一旦確定了這個值,就可以對工具發出請求的速度進行調整。下面的表列出了幾個可以用來維持50個請求每秒(RPS)的值。從服務器的視角來看,工具需要每20ms提供一個請求。這種觀點反映的是單個線程的情況。如果工具配置了兩個線程,那么對于每個線程,都應該維持40ms的請求間時間間隔。表中還列出了使用5個線程和10個線程的情況下的時間間隔。

線程數目
線程頻率
請求間時間間隔(inter-request interval)

1

50/sec
20ms
2
25/sec
40ms
5
10/sec
100ms
10
5/sec
200ms


抉擇

  從理論上來說,這個表展示了如何使用1個、2個、5個、10個線程來實現所要求的維持50個RPS的目標。但是如果服務時間比請求間時間間隔長的話會怎么樣呢?這種情況下駐留在服務器中的線程不能使下一個請求排入隊列,工具也不能交付50RPS的預期負載。為了避免這種情況發生,需要在系統中構建一些空余時間(slack)。使用大量線程的方案對我們來說通常是不可行的,因為我們很有可能要受到可用的硬件數目和/或許可證數目(對于商業的負載測試工具來說)的限制。解決方法其實很常見,就是我們需要達到一種維持合適的請求間時間間隔與使用過多的(計算/許可)資源之間的平衡。我們要始終記住,如果測試工具使用的資源(不管是硬件、軟件或是線程)很少,就會影響我們測試的有效性。

三思而后行

  我們使用Apache JMeter來對隨機的Web應用程序進行負載測試,以說明壓力測試工具是如何影響測試結果的。除了要知道應用程序的入口點是Servlet,應用程序的功能以及如何實現的詳細信息對于我們的討論來說并不重要。

  圖1顯示了在平均響應時間下增加線程數目的效果。其中粉紅色的線是沒有調整線程的情況。藍色的線是在每兩個線程之間添加了500ms的空余時間后的線程。從圖中可以看出,兩種情況的結果差別非常小。每種情況都清楚表明,隨著系統的負載增加,響應時間也會增加。既然我們已經知道服務器的性能會隨總體負載的增加而降低,這樣的結果也就不奇怪了。我們只是在看圖2所示的結果時才能看出存在的問題。

 調整壓力測試工具(圖一)

  圖2顯示維持穩定的請求速度的能力最初是受制于線程數目的。同樣這也不能說明問題,因為有理由假定,在超出特定的線程數目閾值之前,不能維持合理的服務器負載。圖2也顯示,一旦超出了服務器處理請求的能力,線程的增加對工具向服務器發出請求的整體速度的影響就不明顯了。另外一點是,這些“額外”的線程所造成的響應時間的增加確實暗示它們影響了系統的負載。

 調整壓力測試工具(圖二)

  問題在于:為什么不增加服務器負載的線程看起來會降低服務器的性能?一個可能的答案就是,并不是線程降低了服務器的性能,而是服務器一結束對線程的服務,線程就被排隊了。因為測量響應時間的計時器必須在將請求發送給服務器時啟動,在收到響應時停止,所以響應時間必然包括線程在隊列中等待服務的所有時間,再加上服務時間。因為線程一離開就進入系統,就造成了這樣的情況:線程必須等待其他每個線程完成后才能被服務。在這種場景下,線程越多就會造成隊列和響應時間越長。

  利托氏定理告訴我們,這種系統是發散的,而由此可以得出結論:工具妨礙了確定真正的瓶頸(如果存在的話)的能力。

放慢速度,做得更多

  利托氏定理包括兩個部分:服務時間和頻率。如果我們以工具的眼光來看世界,那么我們會發現我們不能控制服務時間。但是我們確實能控制頻率。既然前面的工作說明我們進行得太快了(或者說在錯誤的方向上進行得太快了),而我們惟一能控制的就是頻率,那么我們惟一能做的就是放慢速度。我們可以通過在每兩個請求之間插入間歇來達到這個目的。這將會降低單個線程啟動請求的速度。間歇會降低線程在隊列中的時間,從而提供更符合現實的響應時間。

  為了測試,我們將啟動50個經過調整的每秒產生9個請求的線程。如果我們發現不能維持合理的請求速度,這些值還可以調整。使用響應時間來評價效果。最后要設置的是間歇時間。可以使用由先前運行得出的數據來幫助我們做出決定。

  回到圖1,我們可以看到,8到9個RPS會產生2到3秒的響應時間。利托氏定理告訴我們,我們需要足夠的線程,以便在2到3秒的時間幀后就可以自由進入系統(假定可以提高平均響應時間)。因此平均的間歇時間大約是3秒。為了練習,我們將運行一系列的測試來探討值的范圍。

  第一次測試使用2到2.5秒之間的一個隨機選取的值。這個范圍的值的平均間歇時間是3.5秒??梢岳眠@條信息計算請求的理論速度:用50(線程數目)除以3.5+2(目標響應時間的估測值)。得到的值是9.1RPS。第二次測試使用3到6秒之間的一個隨機值。最終測試使用4到6之間的值。這些測試的結果如圖3所示。

 調整壓力測試工具(圖三)

  圖3說明增加間歇的時間會使平均響應時間縮短。但是這條信息需要與圖4所傳達的信息相結合。在圖4中,我們可以看到,當間歇時間增加到4-7秒時不能保持要求的向服務器發出請求的速度。我們可以通過添加更多的線程來增加負載,但是這一步中存在最小值,因為這些測試的確為我們提供了有效的配置。

 調整壓力測試工具(圖四)

  這一系列的測試有助于將壓力測試推進到一個更好的配置。我們的結論是:應該配置我們的測試工具,使其使用50個線程,每個線程的間歇時間為3到6秒。

結束語

  在開始性能調優實踐(或者為性能確定基準)之前,需要確認工具不會影響測試。配置良好的工具不會讓我們測量不該測量的數據。不能交付適當的負載或會使我們測量偶然的響應時間的測試工具將會影響對應用程序進行性能調優的工作。要想知道是否發生了這種情況,關鍵是要度量工具以正常速度運行的效果。這種效果可以由工具滿足或支持所要求的每秒的事務或請求數目的能力來確定。工具不應該立刻輪換線程(來發出下一個請求)。如果發生了這種情況,就需要降低工具的速度,以免人為地使服務器的容量溢出。通常需要試驗幾次以達到測試工具的適當的平衡配置。在測試的早期階段,不要把重點放在響應時間(它會隨著對應用程序調優的過程而改善)上,而是要放在配置好工具上。最后,不要害怕放慢速度,因為這樣做可能有助于弄清楚到底是什么影響了應用程序的性能。


(出處:http://www.49028c.com)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人精品久久二区二区91| 精品一区二区三区四区在线| 亚洲女成人图区| 亚洲免费一级电影| 欧美一级视频一区二区| 亚洲免费福利视频| 欧美激情国内偷拍| 日韩精品有码在线观看| 国产精品男女猛烈高潮激情| www.欧美三级电影.com| 色中色综合影院手机版在线观看| 日韩av中文字幕在线| 国内精品国产三级国产在线专| 米奇精品一区二区三区在线观看| 亚洲free性xxxx护士hd| 久久久久这里只有精品| 精品国产福利在线| 亚洲精品黄网在线观看| 欧美肥老妇视频| 亚洲日本欧美中文幕| 4k岛国日韩精品**专区| 日韩精品视频中文在线观看| 精品国偷自产在线| 亚洲色图综合网| 91高清视频在线免费观看| 日韩av网址在线观看| 中文字幕日韩精品在线| 综合国产在线观看| 亚洲18私人小影院| 国产精品永久免费在线| 国产精品男人爽免费视频1| 91网站在线看| 亚洲专区在线视频| 久久久久久久久久婷婷| 精品国产一区二区三区久久狼黑人| 97久久伊人激情网| 性欧美办公室18xxxxhd| 亚洲国产精品人久久电影| 久久精品一区中文字幕| 国产精品久久中文| 乱亲女秽乱长久久久| 久久精品2019中文字幕| 日韩av最新在线观看| 日韩国产中文字幕| 国产午夜精品免费一区二区三区| 成人免费激情视频| 日韩专区中文字幕| 97在线视频免费观看| 亚洲加勒比久久88色综合| 俺去了亚洲欧美日韩| 国产精品免费看久久久香蕉| 在线播放日韩专区| 国产精品免费一区二区三区都可以| 亚洲成年人在线播放| 国产精品高潮呻吟久久av野狼| 九九热精品视频国产| 日产精品久久久一区二区福利| 亚洲在线视频观看| 欧美日韩不卡合集视频| 综合国产在线观看| 久久国产天堂福利天堂| 国产一区二区欧美日韩| 亚洲高清一二三区| 亚洲欧美在线一区二区| 26uuu另类亚洲欧美日本一| 欧美日韩成人网| 成人综合国产精品| 亚洲精品国产拍免费91在线| 国产香蕉一区二区三区在线视频| 欧美黑人xxxⅹ高潮交| 性欧美长视频免费观看不卡| 理论片在线不卡免费观看| 亚洲色无码播放| 国产精品一区二区电影| 国产精品私拍pans大尺度在线| 热99精品里视频精品| 国产精品久久久久久久久| 亚洲精选中文字幕| 一区二区三区视频免费| 热re99久久精品国产66热| 91禁外国网站| 日韩少妇与小伙激情| 97成人精品视频在线观看| 北条麻妃一区二区三区中文字幕| 2019亚洲日韩新视频| 国产日韩欧美中文在线播放| 成人做爰www免费看视频网站| 国产精品jvid在线观看蜜臀| 亚洲精品91美女久久久久久久| 欧美精品videossex性护士| 欧美激情网友自拍| 美女精品久久久| 亚洲天堂男人天堂| 久久99久久亚洲国产| 欧美精品在线极品| 亚洲成人国产精品| 俺去亚洲欧洲欧美日韩| 日韩精品中文字幕在线播放| 国产精品成人免费电影| 久久精品最新地址| 欧美理论片在线观看| 亚洲欧美日韩在线高清直播| 国产美女91呻吟求| 日韩av免费网站| 亚洲石原莉奈一区二区在线观看| 午夜精品久久久久久久久久久久久| 中文欧美日本在线资源| 狠狠躁18三区二区一区| 黑丝美女久久久| 国产精品中文字幕久久久| 国产aⅴ夜夜欢一区二区三区| 国产成人久久久| 国产精品高潮呻吟久久av无限| 亚洲三级黄色在线观看| 亚洲国产精品免费| 亚洲国产又黄又爽女人高潮的| 国产69久久精品成人看| 欧美日韩xxxxx| 欧美亚洲成人网| 欧美黑人性视频| 欧美精品久久久久久久免费观看| 日韩有码片在线观看| 精品福利在线看| 欧美自拍视频在线观看| 中文字幕亚洲一区二区三区五十路| 日韩成人av网址| 欧美成年人在线观看| 91精品久久久久久久| 一级做a爰片久久毛片美女图片| 国内免费久久久久久久久久久| 久久99青青精品免费观看| 日韩在线视频播放| 欧美性受xxxx黑人猛交| 久久香蕉国产线看观看网| 日韩一区二区欧美| 久久久久免费视频| 国内成人精品视频| 亚洲欧美日韩中文视频| 一区二区三区日韩在线| 成人网在线免费观看| 久久精品国产欧美亚洲人人爽| 日韩欧美国产免费播放| 91欧美精品成人综合在线观看| 国产大片精品免费永久看nba| 97成人精品视频在线观看| 伊人久久久久久久久久久| 久久精品青青大伊人av| 午夜欧美大片免费观看| 永久免费看mv网站入口亚洲| 日韩高清av在线| 国产精品一区二区电影| 在线看欧美日韩| 欧美华人在线视频| 在线激情影院一区| 日韩在线视频免费观看高清中文| 一区二区三区高清国产| 国产精品成人av在线| 国产精品美女免费视频| 久久亚洲精品成人| 日韩欧美在线视频| 在线精品国产欧美| 日韩av在线免费看| 8090成年在线看片午夜| 91午夜理伦私人影院|