『壹』 jmeter並發數和線程數的區別
一、指代不同
1、並發數:指同時訪問伺服器站點的連接數。
2、線程數:是程序中一個單一的順序控制流程,在單個程序中同時運行多個線程完成不同的工作,稱為多線程猜虛知。
二、原理不同
1、並發數:建立在每台伺服器多用戶的基礎上的,也就是多個用戶共同使用一台伺服器。為了避免同一台伺服器上的某一個用戶的IIS鏈接人數過多或佔用伺服器資源過多而影響其它用戶的正常使用。
2、線程數:服務端傳送數據到用戶端,把用戶端和服務端比做兩個小島,線程數比做連接兩個小島之間的橋梁,架橋越多,單位時間內傳送的數據越多,但如果橋梁架設超過雙方所能承受的數量時,用戶端穗消將無法接受其他服務端的數據。
三、特點不同
1、並發數:伺服器對於某一個鏈接的默認超時時間一般譽帆為15--20分鍾,也就是當訪問用戶訪問你的網頁並關閉後,一般需要15--20分鍾,伺服器才從其內存中將其清除,視為無效鏈接
2、線程數:用戶可以根據不同的服務端限制,來修改下載軟體的原始下載線程數。根據下載資源的熱門程度,其候選資源數量的不同,該任務下載可用的線程數也會不同。
『貳』 jmeter並發數和線程數的區別
一、指代不同
1、並發數:指同時訪問伺服器站點的連接數。
2、線程數:是程序中一個單一的順序控制猜虛知流程,在單個程序中同時運行多個線程完成不同的工作,稱為多線程。
二、原理不同
1、並發數:建立在每台伺服器多用戶的基礎上的,也就是多個用戶共同使用一台伺服器。為穗消了避免同一台伺服器上的某一個用戶的IIS鏈接人數過多或佔用伺服器資源過多而影響其它用戶的正常使用。
2、線程數:服務端傳送數據到用戶端,把用戶端和服務端比做兩個小島,線程數比做連接兩個小島之間的橋梁,架橋越多,單位時間內傳送的數據越多,但如果橋梁架設超過雙方所能承受的數量時,用戶端將無法接受其他服務譽帆端的數據。
三、特點不同
1、並發數:伺服器對於某一個鏈接的默認超時時間一般為15--20分鍾,也就是當訪問用戶訪問你的網頁並關閉後,一般需要15--20分鍾,伺服器才從其內存中將其清除,視為無效鏈接
2、線程數:用戶可以根據不同的服務端限制,來修改下載軟體的原始下載線程數。根據下載資源的熱門程度,其候選資源數量的不同,該任務下載可用的線程數也會不同。
『叄』 並發連接數
並發連接數指的是客戶端向伺服器發起請求,並建立了TCP連接。每秒鍾伺服器鏈接的總TCP數量,就是並發連接數。
最大並發數連接是防火牆或代理伺服器對其他業務信息流的處理能力,是防火牆能夠同時處理點對點連接的最大數目,是防火牆設備對多個連接的訪問控制能力和連接狀態跟蹤能力,這個參數的大小直接影響到防火牆所有支持的最大信息點數,代表防火牆性能的一個重要指標。從常見的防火牆設備的使用說明可以看出,從低端設備的500或1000個桐信並發連接到高端設備的數萬或百萬個並發連接,有幾個數量級的差異。
並發主要是針對伺服器而言,是否並發的關鍵是看用戶操作是否對伺服器產生了影響。因此,並發用戶數量可以理解為:在同一時刻與伺服器進行了交互的在線用戶數量。這些用戶的最大特徵是和伺服器產生了交互,這種交互既可以是單向的傳輸數據,也可以是雙向的傳送數據。比如並發局畝輪連接數為10,就表示最多有十個連接同時連接到伺服器,如果一個網站只有一個請求的話,就是最多10個人同時去打開這個網耐旦站,如果有11個人同時打開這個網站,第11個請求就會等待,直到前面的連接被斷開。
『肆』 關於性能測試中「並發」的解釋
當我們在談論「並發」時
動輒要求系統支持成百上千並發的性能需求太多了,也許系統在實際中確實存在這樣的需求,但能夠較全面理解此需求的情況並不多。
對於並發,我過去接觸了幾種理解,在接觸的第一種理解中,「並發」是由loadrunner中獲取,即腳本中所有或部分vuser執行至集合點函數時進行停留,等待觸發條件發生以後,同時執行集合點函數後的請求操作的這一個過程,為「並發」(這一個請求操作一般存在多銷閉個http請求),可惜這種「並發」是無法直接用於衡量系統性能的。而在接觸的第二種理解中,「並發」的理解是相對於伺服器某一個時間區間內接收的請求數,也就是每秒的點擊率(loadrunner考慮到這點,也就是analysis裡面的hits/s),為「並發」,這種「並發」是可以用於對系統性能狀況進行量化的,但是這種測試思想只是比較片面的從性能指標的角度去衡量系統性能,不能體現出系統性能帶給用戶何種性能體驗(這也是不少開源性能測試工具的問題)。
前一種「並發」的理解普遍獲得了loadrunner初級用戶的認可,後一種「並發」的理解普遍獲得系統運維、開發人員的認可,在溝通中為了方便區別開來,在兩種角色裡面,當大家意識到並發的理解存在差異時,大家把前一種被稱為「狹義上的並發」,而後一種被稱為「廣義上的並發」。後來,又從淘寶團隊裡面了解了一種定義,貌似淘寶QA把「並發」定義為一個完整的事務請求數量過程(loadrunner也考慮到這點,也就是analysis裡面的Transactions per Second)。一直以來,還有一種技術范圍以外對「並發」的粗略的理解被第三方測試拿來用了,那就是用戶在線數中的某個百分比即並發數。
如果一個團隊裡面對「並發」的理解有這么多種,那麼當我們在討論性能需求的「支持並發數」時,我們究竟在討論什麼呢?
個人認為,有一部分的原因是由於loadrunner是惠普saas(軟體即服務的解決方案)的一部分,所以並不是一個純粹技術人員使用的測試工具,它同時也是一個業務人員可以相對輕易掌握的性能測試工具,因此loadrunner內很多名詞解釋也不能單純從技卜斗告術人員的角度從字面意義上理解。
通常來說,面對同樣100筆業務交易量,普遍會認為100vuser對伺服器產生的負載會比50vuser要高,但是在性能腳本能夠在較快的響應時間中完成時,由於50vuser執行過程中每一個vuser都需要發生兩次迭代,導致了性能場景中vuser在腳本action部分停留的時間更長,因此反而能夠得到比100vuser的更高的vuser在線數,更高在線數帶來的也就是更大的負載,也就是說:
同等業務量的情況下,50 線程所產生的負載完全有可能比100 線程所產生的負載要高。
為了避免發生這種問題,「並發(集合點)」的真正作用就體現出來了,通過集合點函數控制了vuser的行為相對一致,降低了初始化過程和事務前後型明文請求產生的時間差影響。測試工具中並發存在的真正意義也就在這里,對集合點所理解的「並發」,和現場實際用戶裡面同時觸發的請求關系不是太大。
分析「並發」需求時的一些典型:
a) 某個業務系統裡面有10000用戶,但是能夠訪問這個系統的終端數只有1000個、或者所需測試的業務每個月上限是1000筆,那麼最高在線用戶數就不可能超過1000、業務量也不可能超過1000。所以,有些時候在分析性能需求的時候,去統計一個業務系統的用戶數還不如去統計能夠訪問這個系統的終端數、甚至業務量靠譜。
b) 某個業務系統裡面,各個業務模塊都不一樣,那麼就是說完成一筆業務交易,所產生的請求數也是不一樣的,例如表單新增,有的需要填寫20個欄位,有的只需要填寫5個欄位,各個表單都不一樣,那麼為了更接近的去模擬用戶現場負載,請求數都不一樣的各種業務混在一起,並發數又應該是多少呢?
為了解決這些問題,需要首先考慮「並發」的粒度,以真實的業務場景為例:
a) 把粒度控制在用戶上來看,假定所有用戶訪問一次系統平均耗時500秒,一個業務峰值會有800用戶在線,則800/500=1.6。理論上,系統的性能需求是每秒要成功處理1.6個用戶的請求;
b) 把粒度控制在事務上來看,假定所有用戶執行一次完整的、成功的業務操作平均需要500秒,一個業務峰值有2000筆所關注的業務需要去執行,則2000/500=4。理論上,系統的性能需求是每秒要成功處理4筆業務交易;
c) 把粒度控制在請求上來看,假定所有用戶執行一次完整的、不管成功或者失敗的HTTP請求操作平均需要0.08秒,一個業務峰值有28000個請求需要去完成,則28000/0.08=350000。理論上,系統的性能需求是每秒要成功處理350000個請求。
實際一點的案例看看
在下面的圖表中,橫軸表示了某業務系統中上午9:00至12:00的一個區間,假定期間只有A、B、C訪問了該業務系統。如果用戶的訪問過程中發送一個請求,則在請求發生的時間中標識一個點,由圖可見:
A用戶的行為:早上9:00訪問了業務系統,並發生了一連串的請求(多個點已經連成一條直線),再然後沒有再連續的發生請求(沒有再出現黑線),而是有規律的間歇請求,我們暫且猜想用戶A這個時候在瀏覽系統中的業務數據,這確實也符合瀏覽行為,空白階段可以理解為在線的瀏覽,並不會對伺服器產生負載;
B用戶的行為:早上9:00訪問了業務系統,並在臨近12:00訪問了業務系統,發送了一連串的請求,我們猜想該用戶在執行了一些業務操作,瀏覽所佔的比例比較低;
C用戶的行為:僅僅在10:30左右訪問了業務系統,執行了一連串業務操作以後沒有再訪問系統。
那麼在這里案例裡面,我們已知:3用戶在線。問題:並發用戶最高該是多少?答案其實顯而易見,並發只有2個用戶,因為用戶C執行的業務操作的同時只有A也在執行業務操作,B完全是不在線。
還會有人認為100用戶在線就應該上100個vuser/線程么?
『伍』 iis並發連接數和同時在線人數的概念是什麼,區別是什麼
並發數是iis,在某一個時間點,可以有多少個連接數,這個iis伺服器配置,程序的性能有一定關系。連接數一般是個線程數。
同時在線人數比較虛。就是一個網站,可以讓多少人在一個時間段內(注意是時間段,時間跨度比時間點要長)同時訪問網站。
比方一個論壇,你可以登錄了,10分鍾不訪問,也算你在線。但是這個時候你是不佔用並發連接數的。
比方一個伺服器支持並發連接1000,平均每個用戶佔用10個連接數字。那麼同一時刻只能有100個用戶訪問這個網站。如果有多餘100個的人,那麼就要排隊等待。
並發連接數和同時在線人數,要看你是做什麼應用,如果是看看新聞,一篇文章你點開了,要看半天,那麼你看的過程里是不佔用並發數的。但如果是游戲,下載或者視頻什麼的,因為你基本實時與伺服器通信,那麼伺服器可支持的同時在線人數不會太多。
『陸』 網站伺服器的並發是什麼意思
並發,就是同時的鏈接
你可以理解為,同一秒鍾,同時鏈接網路的客戶端數量
當然准確的意義上是毫秒或者更低,
重在一個同時的概念
『柒』 性能-什麼是並發用戶數
我們假設上圖中的這些小人是嚴格按照這個邏輯到達系統的,那顯然,系統的絕對並發用戶數是 4。如果描述 1 秒內的並發用戶數,那就是 16。是不是顯而易見?
但是,在實際的系統中,用戶通常是這樣分配的:
也就是說,這些用戶會分布在系統中不同的服務、網路等對象中。這時候」絕對並發「這個概念就難描述了,你說的是哪部分的絕對並發呢?
要說積分服務,那是 2;要說庫存服務,那是 5;要說訂單服務,它自己是 5 個請求正在處理,但同時它又 hold 住了 5 個到庫存服務的鏈接,因為要等著它返回之後,再返回給前端。所以將絕對並發細分下去之後,你會發現頭都大了,不知道要描述什麼了。
有人說,我們可以通過 CPU 啊,I/O 啊,或者內存來描述絕對並發,來看 CPU 在同一時刻處理的任務數。如果是這樣的話,絕對並發還用算嗎?那肯定是 CPU 的個數呀。有人說 CPU 1ns 就可以處理好多個任務了,這里的 1ns 也是時間段呀。要說絕對的某個時刻,任務數肯定不會大於 CPU 物理個數。
所以「絕對並發」這個概念,不管是用來描述硬體細化的層面,還是用來描述業務邏輯的層面,都是沒什麼意義的。
我們只要描述並發就好了,不用有「相對」和「絕對」的概念,這樣可以簡化溝通,也不會出錯。
那麼如何來描述上面的並發用戶數呢?在這里我建議用 TPS 來承載「並發」這個概念。
並發數是 16TPS,就是 1 秒內整個系統處理了 16 個事務。
這樣描述就夠了,別糾結。
那麼新問題又來了,在線用戶數和並發用戶數應該如何算呢?下面我們接著來看示意圖:
如上圖所示,總共有 32 個用戶進入了系統,但是綠色的用戶並沒有任何動作,那麼顯然,在線用戶數是 32 個,並發用戶數是 16 個,這時的並發度就是 50%。
但在一個系統中,通常都是下面這個樣子的。
為了能 hold 住更多的用戶,我們通常都會把一些數據放到 Redis 這樣的緩存伺服器中。所以在線用戶數怎麼算呢,如果僅從上面這種簡單的圖來看的話,其實就是緩存伺服器能有多大,能 hold 住多少用戶需要的數據。
最多再加上在超時路上的用戶數。如下所示:
所以我們要是想知道在線的最大的用戶數是多少,對於一個設計邏輯清晰的系統來說,不用測試就可以知道,直接拿緩存的內存來算就可以了。
假設一個用戶進入系統之後,需要用 10k 內存余槐來維護一個用戶的信息,那麼 10G 的內存就能 hold 住 1,048,576 個用戶的數據,這就是最大在線用戶數了。在實際的項目中,我們還會將超時租毀正放在一起來考慮。
但並發用戶數不同,他們需要在系統中執行某個動作。我們要測試的重中之重,就是統計這些正在執行動作的並發用戶數。
當我們統計生產環境中的在線用戶數時,並發用戶數也是要同時統計的。這里會涉及到弊悔一個概念:並發度。
要想計算並發用戶和在線用戶數之間的關系,都需要有並發度。
做性能的人都知道,我們有時會接到一個需求,那就是一定要測試出來 系統最大在線用戶數是多少。 這個需求怎麼做呢?
很多人都是通過加思考時間(有的壓力工具中叫等待時間,Sleep 時間)來保持用戶與系統之間的 session 不斷,但實際上的並發度非常非常低。
我曾經看到一個小伙,在一台 4C8G 的筆記本上用 LoadRunner 跑了 1 萬個用戶,裡面的 error 瘋狂上漲,當然正常的事務也有。我問他,你這個場景有什麼意義,這么多錯?他說,老闆要一個最大在線用戶數。我說你這些都錯了呀。他說,沒事,我要的是 Running User 能達到最大就行,給老闆交差。我只能默默地離開了。
這里有一個比較嚴重的理解誤區,那就是壓力工具中的線程或用戶數到底是不是用來描述性能表現的?我們通過一個示意圖來說明:
通過這個圖,我們可以看到一個簡單的計算邏輯:
而我們通常說的「並發」這個詞,依賴 TPS 來承載的時候,指的都是 Server 端的處理能力,並不是壓力工具上的並發線程數。在上面的例子中,我們說的並發就是指伺服器上 100TPS 的處理能力,而不是指 5 個壓力機的並發線程數。請你切記這一點,以免溝通障礙。
所以,我一直在強調一點,這是一個基礎的知識:不要在意你用的是什麼壓力工具,只要在意你服務端的處理能力就可以了。
上面說了這么多,我們現在來看一個實例。這個例子很簡單,就是:
JMeter(1 個線程) - Nginx - Tomcat - MySQL
通過上面的邏輯,我們先來看看 JMeter 的處理情況:
我們可以看到,JMeter 的平均響應時間基本都在 5ms,因為只有一個壓力機線程,所以它的 TPS 應該接近 1000ms/5ms=200TPS。從測試結果上來看,也確實是接近的。有人說為什麼會少一點?因為這里算的是平均數,並且這個數據是 30s 刷新一次,用 30 秒的時間內完成的事務數除以 30s 得到的,但是如果事務還沒有完成,就不會計算在內了;同時,如果在這段時間內有一兩個時間長的事務,也會拉低 TPS。
那麼對於服務端呢,我們來看看服務端線程的工作情況。
可以看到在服務端,我開了 5 個線程,但是服務端並沒有一直幹活,只有一個在幹活的,其他的都處於空閑狀態。
這是一種很合理的狀態。但是你需要注意的是,這種合理的狀態並不一定是對的性能狀態。
下面我們換一下場景,在壓力機上啟動 10 個線程。結果如下:
平均響應時間在 25ms,我們來計算一處,(1000ms/25ms)*10=400TPS,而最新刷出來的一條是 396.2,是不是非常合理?
同樣是 5 個線程,現在就忙了很多。
如果要有公式的話,這個計算公式將非常簡單:
對於壓力工具來說,只要不報錯,我們就關心 TPS 和響應時間就可以了,因為 TPS 反應出來的是和伺服器對應的處理能力,至少壓力線程數是多少,並不關鍵。我想這時會有人能想起來 JMeter 的 BIO 和 AIO 之爭吧。
你也許會說,這個我理解了,服務端有多少個線程,就可以支持多少個壓力機上的並發線程。但是這取決於 TPS 有多少,如果服務端處理的快,那壓力機的並發線程就可以更多一些。
這個邏輯看似很合理,但是通常服務端都是有業務邏輯的,既然有業務邏輯,顯然不會比壓力機快。
應該說,服務端需要更多的線程來處理壓力機線程發過來的請求。所以我們用幾台壓力機就可以壓幾十台服務端的性能了。
如果在一個微服務的系統中,因為每個服務都只做一件事情,拆分得很細,我們要注意整個系統的容量水位,而不是看某一個服務的能力,這就是拉平整個系統的容量。
我曾經看一個人做壓力的時候,壓力工具中要使用 4000 個線程,結果給服務端的 Tomcat 上也配置了 4000 個線程,結果 Tomcat 一啟動,稍微有點訪問,CS 就特別高,結果導致請求沒處理多少,自己倒浪費了不少 CPU。
通過示意圖和示例,我描述了在線用戶數、並發用戶數、TPS(這里我們假設了一個用戶只對應一個事務)、響應時間之間的關系。有幾點需要強調:
『捌』 寬頻並發數為2是什麼意思
兩個連接。或宏並發數是指同時衫鍵冊訪問伺服器站點的鏈接數,反應了系統的負載能力。寬頻並發數為2就是有兩個連接伺服器站亮茄點。
『玖』 mysql並發數是什麼意思
可能影響,並可能影響。這就是所謂的「一個老鼠屎壞升段了一鍋湯。」許多DBA都遇到類似的問題,即一台伺服器上,在伺服器上的所有應用程序的應用程序編程問題,導致多個應用程序的數據都受到牽連。但是,根據你的描述,如果唯一的A1死鎖,液頃然後A2是不是一個問題。但是,如果的A1表掃描或復雜的計算,導致太多的資鬧笑陸源,這將影響到A2的壓力。
資料庫的並發性通常指的是整個伺服器的並發性,無論資料庫伺服器的幾個庫
『拾』 什麼是伺服器並發量並發量如何計算
並發的意思是指網站在同一時間訪問的人數,人數越大,瞬間帶寬要求更高。伺服器並發量分為:1.業務並發用戶數;2.最大並發訪問數;3.系統用戶數;4.同時在線用戶數;
說明伺服器實際壓力,能承受的最大並發訪問數,既取決於業務並發用戶數,還取決於用戶的業務場景,這些可以通過對伺服器日誌的分析得到。
一般只需要分析出典型業務(用戶常用,最關注的業務操作)
給出一個估算業務並發用戶數的公式(測試人員一般只關心業務並發用戶數)
C=nL/T
C^=C+3×(C的平方根)
C是平均的業務並發用戶數、n是login session的數量、L是login session的平均長度、T是指考察的時間段長度、C^是指業務並發用戶數的峰值。
假設OA系統有1000用戶,每天400個用戶發訪問,每個登錄到退出平均時間2小時,在1天時間內用戶只在8小時內使用該系統。
C=400×2/8=100
C^=100+3×(100的平方根)=100+3×10=130
另外,如果知道平均每個用戶發出的請求數u,則系統吞吐量可以估算為u×C
精確估算,還要考慮用戶業務操作存在一定的時間集中性(比如上班後1小時內是OA系統高峰期),採用公式計算仍然會存在偏差。
285-104-1346