Loadrunner并發(fā)用戶與集合點討論(轉)

          Posted on 2008-06-06 00:47 windy 閱讀(369) 評論(0)  編輯  收藏 所屬分類: 性能測試
                  看到51上三個高手Zee, 大漠飛鷹,xingcyx的一場非常精彩的關于并發(fā)用戶數(shù)和集合點的討論,很有意義。如果對這兩個概念不清楚的朋友,一定要仔細領悟了。
          故事開始于xingcyx的一番話:
          聲明:以下的問答是我根據實際工作經驗和通過各種途徑得到的信息而整理的,其回答內容主要代表我個人觀點,并非標準答案,讀者如有不同意見,歡迎批評指教。
          Q:并發(fā)用戶數(shù)和集合點有必然聯(lián)系嗎?在性能測試中必須使用集合點來測試嗎?
          A:并發(fā)用戶數(shù),顧名思義,就是同時操作的用戶,這里的“操作”可以指對系統(tǒng)真正的操作,也可以只是連接(此時通常叫作“并發(fā)連接數(shù)”),而集合點是一種特殊情況下的并發(fā),多用于測試系統(tǒng)在瞬間加壓的表現(xiàn)。因此,并發(fā)用戶數(shù)和集合點有聯(lián)系,但并非必然的聯(lián)系,在測試并發(fā)用戶的性能測試場景中,可以不必設置集合點,這將視測試目標和測試策略而定。
          Q:不設置集合點的測試,能代表是“并發(fā)”操作嗎?
          A:有這樣一種說法,設置集合點是為了確保“嚴格意義上”的并發(fā),其實從本質上看,這主要是一個看問題的粒度大小的問題。集合點的作用是通過工具的控制,確保一個請求嚴格的“同時”從前臺提交到后臺。可是如果微觀地看,是不存在嚴格意義上的并發(fā)的,即使在客戶端通過設置集合點的方式將100個請求同時提交到后臺,經過網絡上的傳輸消耗,可能它們并不是同時到達的,而即便100個請求同時到達服務器端,受到中間件和應用系統(tǒng)、數(shù)據庫的各種連接池、緩沖區(qū), CPU處理隊列等的限制,也可能在服務器端產生等待的。因此,嚴格意義上的“并發(fā)”可以說是不存在的,我們需要做的是在可以接受的粒度范圍內取得一個最佳的平衡點,站在這個平衡點的層面上去看待“并發(fā)”這個問題。
          性能測試無非有兩個目的,一是評測,二是調優(yōu)。
          在以評測為目的的性能測試中,用戶更關心的是業(yè)務上的并發(fā),也就是真實業(yè)務場景的并發(fā)情況,這種情況下只要按照業(yè)務操作的模式去設置場景就可以了,并不需要設置集合點。
          集合點是一種特殊情況下的并發(fā),通常是在以調優(yōu)為目的的性能測試中才會用得到,目的是有針對性地對某個可能存在性能問題的模塊施壓,以便找到性能瓶頸。
          集合點在我實際的測試過程中用得并不多。
          Zee:
          關于集合點,我一直覺得沒有什么可爭議的,這兩天看到幾個帖子在說這個東西。有一點我想大家都是認同的:集合是相對的集合。
          集合是在產生負載的機器上的集合。如果考慮網絡,中間件等等的因素。到服務器肯定不會是同一時間點,那于是就有人希望能更接近在服務器端實現(xiàn)并發(fā)的操作。認為這才是真正的并發(fā)。
          我覺得首先要做的是分析應用系統(tǒng),到底你想做的是什么。
          比如說,你想讓某個URL能達到1000個同時請求的目的。這樣的目標就比較明確了。
          而在討論集合點的時候,大家很少拿具體的東西來舉個例子。這樣有點說不清楚。要想達到并發(fā)。我覺得應該更具體的分析應用。再來定下目標來做。而不是一直在討論LR如何能實現(xiàn)。
          Xingcyx:
          因為在實踐中,我經常會碰到這樣的情況:
          測試需求說,該系統(tǒng)應支持200個并發(fā)用戶。
          那么我們就開始測,錄制好腳本,下一步就是在場景中執(zhí)行了,在控制臺中設置某腳本并發(fā)用戶數(shù)為200,測試結果為通過或未通過。此時爭議就來了:這200個用戶的腳本如果執(zhí)行通過,測試結果可以接受,是否可以說這個系統(tǒng)支持了200個并發(fā)呢?
          大漠飛鷹:
          測試前肯定要了解需求,或者說是測試目的。
          就說明“該系統(tǒng)應支持200個并發(fā)用戶。”, 這種需求嚴格意義上來說是不合格的需求,因為描述不夠清晰,過于模糊等。
          當然,在實際中,這類需求到了我們測試人的手里也是常有的,一般就當普遍的情況來出來。
          比如,web系統(tǒng),就按2/5/8,或者2/5/10來處理,如果能通過就pass,否則就讓開發(fā)人員調優(yōu)。
          Zee:
          從集合點到并發(fā)數(shù)的確定。我覺得這其中的轉換最主要的地方在于分析業(yè)務。
          比如用戶說了:要求200個用戶并發(fā)。
          那要問清楚的就是,200個用戶是個什么樣的比例,有多少人在干這個,有多人在干那個,按百分比,用不同的腳本來跑。
          那再來想一下客戶。他關心的是200個用戶在服務器上同時點同一個URL或者某一個相同的資源?這個客戶我想大多不會關心。而他想要的就是我有200個用戶在線的時候。響應時間不至于讓人不可接受。至于多少才不可接受。按平常人的心理承受能力來衡量就可以了。再或者有其他的說法,就是200人同時點同一 URL或者請求同一資源,我想可以通過計算來增加vuser的數(shù)量或者集合呀,或者其他的方法來努力的向這個目標靠近。
          如果說非要在服務器上這個時間并發(fā)這么多的用戶。我覺得只能盡量把它縮小到一個時間段內。而這樣做我覺得并不是從分析業(yè)務出發(fā)的,
          Xingcyx:
          樓上說的是最常見的一種情況,在這種測試需求下,我會設置一個混合場景來測試,也就是按照做不同事情的用戶的百分比去設置。
          但會有另外一些時候,并不是一個實際的應用系統(tǒng),可能是一個開發(fā)平臺,或者工作引擎等,它涉及的性能的概念會更偏向底層一些,這個時候可能就不是像一般的應用系統(tǒng)那樣,設置一個混合場景來測試那么簡單了。
          大漠飛鷹:
          一般說的并發(fā)數(shù)指的是業(yè)務并發(fā),而不是服務器端得并發(fā)數(shù)。
          本文來源于天行健,君子以自強不息 http://www.rickyzhu.com , 原文地址: http://www.rickyzhu.com/175_concurrent-user-and-rend.html

          只有注冊用戶登錄后才能發(fā)表評論。


          網站導航:
           

          posts - 1, comments - 0, trackbacks - 0, articles - 5

          Copyright © windy

          主站蜘蛛池模板: 青冈县| 吉安市| 通海县| 磐石市| 临夏县| 江达县| 建昌县| 新津县| 七台河市| 桂阳县| 印江| 昌图县| 开原市| 抚松县| 朝阳县| 安庆市| 海门市| 土默特左旗| 什邡市| 保山市| 泸溪县| 桐柏县| 封开县| 金华市| 浑源县| 南川市| 徐汇区| 伊吾县| 乐至县| 沈阳市| 白水县| 广汉市| 精河县| 屏南县| 大理市| 中西区| 珲春市| 安乡县| 恩平市| 海丰县| 青神县|