A. 多台伺服器如何做網路負載均衡
1:找分區或目錄同步軟體,某台伺服器改動了自動把修改應用到別的伺服器,比如紅旗的HA。
2:換種建伺服器的思路,後台用一台獨立的伺服器做資料庫和文件伺服器,用來存放資料庫和上傳的文件,另外的做負載均衡運行伺服器,把不需要變動的網頁程序放上面。
B. 怎麼測試網路穩定性
可以用ping命令,開始-運行-CMD-輸入ping 網址,-t 看看有沒有丟包問題,可以持續時間長點,如果沒有丟包或很少,說明網路還是穩定的
對網路的穩定性我們可以測試幾個指標:
1、MTBF:平均無故障時間間隔,測試方法:以該系統最大帶寬的50%~80%的速率傳輸數據,連續不間斷工作,記錄系統出故障時間。
2、帶寬:穩定的數據傳輸率。測試方法:同上,逐漸加大數據傳輸率,測試出最大的穩定帶寬。
3、最大並發流數目:TCP或者其他協議的最大支持數,測試方法:採用多客戶機多線程方法建立多條鏈路,記錄系統最大在多少個連接的情況下網路傳輸率下降不明顯。
測試說明:由於是一個較長過程的整體表現,因此,多測試幾遍,去掉最高與最低的結果,其餘結果取平均值。
所謂的穩定性是指網路系統能夠提高長期、可靠、滿足指標帶寬的性能。
長期:網路系統必須在較長的時間內正常工作,不能發生宕機、重啟等故障。
可靠:在滿負載的情況下工作正常,不能崩潰或者效率下降很多。
帶寬:能夠穩定提供不少於某個指標的數據傳輸率
C. 「網路負載」是什麼意思怎麼測試計算
不知道你說的是什麼層面的
網路負載在運營商網路裡面,簡單說指的就是網路中繼承載的流量以及網路設備承載的用戶量
測試和計算用人工只能估算,比如一台設備,已知接入用戶30戶,戶均流量2M/s,中繼的流量大約就是60M/s。主要的計算是靠設備埠計算,每秒經過的流量。還有運營商內部龐大的計算平台統計等方式。
網路負載這個詞更多用於比如「網路負載均衡」,意思是一台設備有兩條上聯中繼共同分攤上聯流量以實現負載均衡,或者兩台設備同時承載相同用戶以實現負載均衡等等。
D. lte負載均衡切換測量原理
1、首先移動性負載均衡(MobilityLoadBalancing)是通過判斷本小區的負載高低。
2、其次進行小區間負載信息交互,將負載從較為繁忙的小區轉移。
3、最後負責處理多個小區上業務負荷的不均勻分布。
E. IPVS(LVS)負載均衡簡介及實驗測試
LVS是Linux Virtual Server的簡稱,也就是Linux虛擬伺服器, 是一個由章文嵩博士發起的自由軟體項目,現在已經是 Linux標准內核的一部分。LVS是一種叫基於TCP/IP的負載均衡技術,轉發效率極高,具有處理百萬計並發連接請求的能力。
LVS的IP負載均衡技術是通過IPVS模塊實現的。IPVS模塊是LVS集群的核心軟體模塊,它安裝在LVS集群作為負載均衡的主節點上,虛擬出一個IP地址和埠對外提供服務。用戶通過訪問這個虛擬服務(VS),然後訪問請求由負載均衡器(LB)調度到後端真實伺服器(RS)中,由RS實際處理用戶的請求給返回響應。
根據負載均衡器轉發客戶端請求以及RS返回響應機制的不同,將IPVS的轉發模式分為三種:VS/NAT,VS/DR,VS/TUN
DR模式下,客戶端的請求包到達負載均衡器的虛擬服務IP埠後,負載均衡器不會改寫請求包的IP和埠,但是會改寫請求包的MAC地址為後端RS的MAC地址,然後將數據包轉發;真實伺服器處理請求後,響應包直接回給客戶端,不再經過負載均衡器。所以DR模式的轉發效率是最高的,特別適合下行流量較大的業務場景,比如請求視頻等大文件。
DR模式的特點:
LB只是將數據包的MAC地址改寫為RS的MAC地址,然後轉發給相應的RS。
因為LB轉發時並不會改寫數據包的目的IP,所以RS收到的數據包的目的IP仍是LB的虛擬服務IP。為了保證RS能夠正確處理該數據包,而不是丟棄,必須在RS的環回網卡上綁定LB的虛擬服務IP。這樣RS會認為這個虛擬服務IP是自己的IP,自己是能夠處理這個數據包的。否則RS會直接丟棄該數據包!
因為LB不會改寫數據包的目的埠,所以RS服務的監聽埠必須和虛擬服務埠一致,否則RS會直接拒絕該數據包。
因為RS收到的請求數據包的源IP是客戶端的IP,所以理所當然RS的響應會直接回給客戶端,而不會再經過LB。這時候要求RS和客戶端之間的網路是可達的。
因為LB在轉發過程中需要改寫數據包的MAC為RS的MAC地址,所以要能夠查詢到RS的MAC。而要獲取到RS的MAC,則需要保證二者位於一個子網,否則LB只能獲取到RS網關的MAC地址。
NAT模式下,請求包和響應包都需要經過LB處理。當客戶端的請求到達虛擬服務後,LB會對請求包做目的地址轉換(DNAT),將請求包的目的IP改寫為RS的IP。當收到RS的響應後,LB會對響應包做源地址轉換(SNAT),將響應包的源IP改寫為LB的IP。
NAT模式的特點:
對於請求包,會進行DNAT;對於響應包,會進行SNAT。
雖然LB在轉發過程中做了NAT轉換,但是因為只是做了部分地址轉發,所以RS收到的請求包里是能看到客戶端IP的。
因為RS收到的請求包源IP是客戶端的IP,為了保證響應包在返回時能走到LB上面,所以需要將RS的默認網關地址配置為LB的虛擬服務IP地址。當然,如果客戶端的IP是固定的,也可以在RS上添加明細路由指向LB的虛擬服務IP,不用改默認網關。
因為需要將RS的默認網關配置為LB的虛擬服務IP地址,所以需要保證LB和RS位於同一子網。
又因為需要保證RS的響應包能走回到LB上,則客戶端不能和RS位於同一子網。否則RS直接就能獲取到客戶端的MAC,響應包就直接回給客戶端了,不會走網關,也就走不到LB上面了。這時候由於沒有LB做SNAT,客戶端收到的響應包源IP是RS的IP,而客戶端的請求包目的IP是LB的虛擬服務IP,這時候客戶端無法識別響應包,會直接丟棄。
IP隧道(IP tunneling)是將一個IP報文封裝在另一個IP報文的技術,這可以使得目標為一個IP地址的數據報文能被封裝和轉發到另一個IP地址。IP隧道技 術亦稱為IP封裝技術(IP encapsulation)。IP隧道主要用於移動主機和虛擬私有網路(Virtual Private Network),在其中隧道都是靜態建立的,隧道一端有一個IP地址,另一端也有唯一的IP地址。
利用IP隧道技術將請求報文封裝轉發給後端伺服器,響應報文能從後端伺服器直接返回給客戶。但在這里,後端伺服器有一組而非一個,所以我們不可 能靜態地建立一一對應的隧道,而是動態地選擇一台伺服器,將請求報文封裝和轉發給選出的伺服器。這樣,可以利用IP隧道的原理將一組伺服器上的網路服 務組成在一個IP地址上的虛擬網路服務。各個伺服器將VIP地址配置在自己的IP隧道設備上。
它的連接調度和管理與VS/NAT中的一樣,只是它的報文轉發方法不同。調度器根據各個伺服器的負載情況, 動態地選擇一台伺服器,將請求報文封裝在另一個IP報文中,再將封裝後的IP報文轉發給選出的伺服器;伺服器收到報文後,先將報文解封獲得原來目標地址為 VIP的報文,伺服器發現VIP地址被配置在本地的IP隧道設備上,所以就處理這個請求,然後根據路由表將響應報文直接返回給客戶。
輪叫調度(Round Robin Scheling)演算法就是以輪叫的方式依次將請求調度不同的伺服器,即每次調度執行i = (i + 1) mod n,並選出第i台伺服器。演算法的優點是其簡潔性,它無需記錄當前所有連接的狀態,所以它是一種無狀態調度。
LB會根據RS上配置的權重,將消息按權重比分發到不同的RS上。可以給性能更好的RS節點配置更高的權重,提升集群整體的性能。
最小連接調度(Least-Connection Scheling)演算法是把新的連接請求分配到當前連接數最小的伺服器。最小連接調度是一種動態調度演算法,它通過伺服器當前所活躍的連接數來估計服務 器的負載情況。調度器需要記錄各個伺服器已建立連接的數目,當一個請求被調度到某台伺服器,其連接數加1;當連接中止或超時,其連接數減一。
加權最小連接調度(Weighted Least-Connection Scheling)演算法是最小連接調度的超集,各個伺服器用相應的權值表示其處理性能。伺服器的預設權值為1,系統管理員可以動態地設置伺服器的權 值。加權最小連接調度在調度新連接時盡可能使伺服器的已建立連接數和其權值成比例。
基於局部性的最少鏈接調度(Locality-Based Least Connections Scheling,以下簡稱為LBLC)演算法是針對請求報文的目標IP地址的負載均衡調度,目前主要用於Cache集群系統,因為在Cache集群中 客戶請求報文的目標IP地址是變化的。這里假設任何後端伺服器都可以處理任一請求,演算法的設計目標是在伺服器的負載基本平衡情況下,將相同目標IP地址的 請求調度到同一台伺服器,來提高各台伺服器的訪問局部性和主存Cache命中率,從而整個集群系統的處理能力。
帶復制的基於局部性最少鏈接調度(Locality-Based Least Connections with Replication Scheling,以下簡稱為LBLCR)演算法也是針對目標IP地址的負載均衡,目前主要用於Cache集群系統。它與LBLC演算法的不同之處是它要 維護從一個目標IP地址到一組伺服器的映射,而LBLC演算法維護從一個目標IP地址到一台伺服器的映射。對於一個「熱門」站點的服務請求,一台Cache 伺服器可能會忙不過來處理這些請求。這時,LBLC調度演算法會從所有的Cache伺服器中按「最小連接」原則選出一台Cache伺服器,映射該「熱門」站 點到這台Cache伺服器,很快這台Cache伺服器也會超載,就會重復上述過程選出新的Cache伺服器。這樣,可能會導致該「熱門」站點的映像會出現 在所有的Cache伺服器上,降低了Cache伺服器的使用效率。LBLCR調度演算法將「熱門」站點映射到一組Cache伺服器(伺服器集合),當該「熱 門」站點的請求負載增加時,會增加集合里的Cache伺服器,來處理不斷增長的負載;當該「熱門」站點的請求負載降低時,會減少集合里的Cache伺服器 數目。這樣,該「熱門」站點的映像不太可能出現在所有的Cache伺服器上,從而提供Cache集群系統的使用效率。
目標地址散列調度(Destination Hashing Scheling)演算法也是針對目標IP地址的負載均衡,但它是一種靜態映射演算法,通過一個散列(Hash)函數將一個目標IP地址映射到一台伺服器。
目標地址散列調度演算法先根據請求的目標IP地址,作為散列鍵(Hash Key)從靜態分配的散列表找出對應的伺服器,若該伺服器是可用的且未超載,將請求發送到該伺服器,否則返回空。
源地址散列調度(Source Hashing Scheling)演算法正好與目標地址散列調度演算法相反,它根據請求的源IP地址,作為散列鍵(Hash Key)從靜態分配的散列表找出對應的伺服器,若該伺服器是可用的且未超載,將請求發送到該伺服器,否則返回空。它採用的散列函數與目標地址散列調度演算法 的相同。它的演算法流程與目標地址散列調度演算法的基本相似,除了將請求的目標IP地址換成請求的源IP地址。
客戶端發送對VIP的請求,lvs負載到後端某一台server,後端server處理後,直接封包回送客戶端,源IP地址一定是lvs上面配的那個公網服務地址,也就後端server要配置這個ip,後端server收到的數據包是lvs沒有變動過的(IP:vip),多個server,接入互聯網的server持有相同的IP,是不允許的,因此,必須將後端server中的vip隱藏起來(對外隱藏,對自己可見)
VIP: 虛擬伺服器地址
DIP: 轉發的網路地址
1,和RIP通信:ARP協議,獲取Real Server的RIP:MAC地址;
2,轉發Client的數據包到RIP上,RIP上要求有VIP(對外隱藏VIP);
RIP: 後端真實主機(後端伺服器)
CIP: 客戶端IP地址
對外隱藏,對內可見
kernel parameter:
目標mac地址為全F,交換機觸發廣播
arp_ignore: 定義接收到ARP請求時的響應級別;
0:只要本地配置的有相應地址,就給予響應;
1:僅在請求的目標(MAC)地址配置請求
到達的介面上的時候,才給予響應;
arp_announce:定義將自己地址向外通告時的通告級別;
0:將本地任何介面上的任何地址向外通告;
1:試圖僅向目標網路通告與其網路匹配的地址;
2:僅向與本地介面上地址匹配的網路進行通告;
lvs 主機:192.168.56.118
RIP主機:也就是需要負載的伺服器,192.168.56.101-103
LVS是Linux Virtual Server的簡寫,意即Linux虛擬伺服器,是一個虛擬的伺服器集群系統,後來將lvs嵌入到linux內核,叫做ipvs
ipvs參數
保存規則
-S
載入此前的規則:
-R
配置lvs的VIP
確保/proc/sys/net/ipv4/ip_forward 內容是1
調整RS的響應。通告級別(每一台RS都配):
配置RS的VIP(每一台RS都配)
啟動RS上的httpd
編寫測試文件
啟動httpd
客戶端驗證:
RIP:80 能顯示
VIP:80不能顯示
負載伺服器安裝LVS管理工具—ipvsadm
瀏覽器刷新: 訪問vip:80
在DR模式中是所有服務機共享一個VIP,但是在IP隧道模式中,就相當於主代理機將包經過自己打包之後,將IP轉化成公網可傳遞的IP,並將消息經過自己又一次的打包,發送給真實伺服器,真實伺服器對這個請求作出響應,這樣就達到一個可以跨地區的傳輸。並且也避免了DR模式中代理機與真實服務機必須在同一區域網的不便。
說明:
1、當用戶請求到達Director Server,此時請求的數據報文會先到內核空間的PREROUTING鏈。此時報文的源IP為CIP,目標IP為VIP 。
2、PREROUTING檢查發現數據包的目標IP是本機,將數據包送至INPUT鏈
3、IPVS比對數據包請求的服務是否為集群服務,若是,在請求報文的首部再次封裝一層IP報文,封裝源IP為為DIP,目標IP為RIP。然後發至POSTROUTING鏈。此時源IP為DIP,目標IP為RIP
4、POSTROUTING鏈根據最新封裝的IP報文,將數據包發至RS(因為在外層封裝多了一層IP首部,所以可以理解為此時通過隧道傳輸)。此時源IP為DIP,目標IP為RIP
5、RS接收到報文後發現是自己的IP地址,就將報文接收下來,拆除掉最外層的IP後,會發現裡面還有一層IP首部,而且目標是自己的lo介面VIP,那麼此時RS開始處理此請求,處理完成之後,通過lo介面送給eth0網卡,然後向外傳遞。此時的源IP地址為VIP,目標IP為CIP
RIP、VIP、DIP全是公網地址
RS的網關不會也不可能指向DIP
所有的請求報文經由Director Server,但響應報文必須不能進過Director Server
不支持埠映射
RS的系統必須支持隧道
LVS伺服器:192.168.56.100
RS伺服器:192.168.56.101,192.168.56.102,192.168.56.103
4.4.5 ### 系統配置 vim /etc/sysctl.conf
4.5.5 ### 系統配置 vim /etc/sysctl.conf
F. 網路負載均衡的驗證方法
網路負載均衡配置好後,為了實現某項具體的服務,需要在網路負載均衡的計算機上安裝相應的服務。例如,為了實現IIS網站的負載均衡,需要在相應的網路負載均衡伺服器上安裝IIS服務。為了讓每個用戶在通過網路負載均衡訪問到不同的計算機時,能夠訪問到一致的數據,需要在網路負載均衡的每台計算機上保持數據的一致性。舉例來說,實現了兩個節點的IIS的網路負載均衡,為了保證兩個網站內容的一致性,除了這兩個IIS伺服器的配置相同外,相應的網站數據必須一致。
為了檢驗網路負載均衡,我們可以通過IIS來進行驗證,其他的一些應用如終端服務、Windows Media服務與IIS的應用與之相類似。在其他計算機上的IE瀏覽器中鍵入192.168.0.9,根據網路的負載,網路負載均衡會自動轉發到A機或B機。為了驗證效果,你可以在瀏覽的時候,拔掉第一台計算機的網線或拔掉第二台機器的網線,將會發現瀏覽到的將是不同內容。當然,我們在測試的時候,為了驗證網路負載均衡的效果,把兩個網站設置成不一致的內容,而在正式應用的時候,網路負載均衡群集的每個節點計算機的內容將是一致的,這樣不管使用哪一個節點響應,都能保證訪問的內容是一致的。
G. 如何測試無線路由器負載能力
「負載均衡」概念運用在網路上,簡單來說是利用多個網路設備通道均衡分擔流量。就像是寺廟一天要挑10桶水,1個和尚必需要走10趟,但同時指派10個和尚卻只要一趟即可完成工作的道理一樣。負載均衡可運用多個網路設備同時工作,達成加速網路信息的處理能力,進而優化網路設備的性能,取代設備必須不停升級或淘汰的命運。目前普遍被運用在網路設備中,如伺服器、路由器、交換機等。
方法一:測試無線信號強度
當無線路由器正常工作時,它的無線信號一定是處於持續的最佳狀態,那麼可以通過無線信號在一段時間內的強弱狀態來判斷無線路由器有沒有問題以及質量的優劣,在這里可以使用inSSIDer測試工具。
inSSIDer是一款WiFi掃描工具,它能將捕捉到的無線信號以列表的形式顯示,你和你鄰居的無線路由器信號都會在這里被羅列出來。它底部 的圖形顯示非常直觀,時間波形圖可以顯示每個無線路由器在過去5分鍾內的信號強度(以dB為單位)。然後還有每個2.4GHz和5GHz信道的圖形,可顯 示現有信號的強度和每個無線路由器所使用的信道寬度。
找到自己無線路由器的名字,根據對應顏色的線條,查看它的實時走勢。如果這條線比較平整的話,那就說明當前無線路由器的信號比較穩定,沒有什麼問題;如果是忽高忽低的波浪形狀,則說明無線信號極其不穩定,無線路由器也有可能出現故障或者是質量比較差。
方法二:測試無線傳輸率
數據傳輸率也是代表無線網路質量的標准之一,進而也反映了無線路由器有沒有出現問題。當出現網頁打不開、在線電影卡頓、游戲掉線等問題時,不妨用Qcheck測試一下無線路由器的數據傳輸率。
Qcheck是一款基於ping命令的網路測試軟體,主要功能是向TCP、UDP、IPX、SPX網路發送數據流來測試區域網絡的響應時間和數據傳輸率,在這里我們可以將它應用到無線網路中。
測試時需要使用兩台安裝有無線網卡的電腦,連接到同一個無線路由器的網路中,作為發送機和接收機,並且它們都需要安裝運行Qcheck軟體。將 發送機和接收機的IP地址輸入軟體的「From Endpoint 1」和「To Endpoint 2」欄目中。如果不知道本機的IP地址的話,可以在Windows的運行欄用「ipconfig」指令來查看。
點擊「TCP」按鈕,在「Options」選項部分中點擊「Throughput」按鈕,然後點擊下方的「Run」按鈕,這樣就開始模擬數據傳 輸,稍後就會看到結果。從一台電腦經過無線路由器向另一台電腦發送數據,然後測試所消耗的時間,並計算出傳輸速率(以Mbps為單位),測試結果越高越 好,如果結果很低,只有幾Kbps的話,那就說明無線路由器出現了問題。
H. 如何驗證負載均衡
如果您將硬體負載平衡器作為 Communicator Web Access(2007 R2 發行版)基礎結構的一部分進行部署,則應該運行一系列的測試來驗證負載平衡器是否正確配置並按預期的方式工作。建議您至少進行以下驗證:
確認每台 Communicator Web Access 伺服器都可以與網路上的其他計算機通信,並且可以連接到 Active Directory。
確認負載平衡器能夠均勻分配傳入連接。
確認標准 Communicator Web Access 活動(如即時消息和狀態檢測)按預期的方式運行。
驗證 DNS 和 LDAP 流量
只有當 Communicator Web Access 伺服器陣列中的各台伺服器都能執行以下兩項操作時,負載平衡才能工作:
解析 IP 地址和計算機主機名。
與 Active Directory 全局編錄伺服器通信。
為此,您應該執行的第一項測試是驗證輕型目錄訪問協議 (LDAP) 和域名系統 (DNS) 連接;此項測試必須在伺服器陣列中的每台伺服器上執行。在測試的第一部分,您將通過 IP 地址(例如,192.168.1.5)對全局編錄伺服器執行 ping 操作。要成功完成測試,必須得到如下響應:
Pinging 192.168.1.5 with 32 bytes of data: Reply from 192.168.1.5:bytes=32 time<1ms TTL=128 Reply from 192.168.1.5:bytes=32 time<1ms TTL=128 Reply from 192.168.1.5:bytes=32 time<1ms TTL=128 Reply from 192.168.1.5:bytes=32 time<1ms TTL=128 Ping statistics for 192.168.1.5: Packets:Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms
如果這一部分測試成功完成,下一步您將通過名稱對全局編錄伺服器執行 ping 操作。對於測試的第二部分,您應該得到如下響應:
Pinging gcserver.contoso.com [192.168.1.5] with 32 bytes of data: Reply from 192.168.1.5:bytes=32 time<1ms TTL=128 Reply from 192.168.1.5:bytes=32 time<1ms TTL=128 Reply from 192.168.1.5:bytes=32 time<1ms TTL=128 Reply from 192.168.1.5:bytes=32 time<1ms TTL=128 Ping statistics for 192.168.1.5: Packets:Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms
通過以上兩部分測試驗證 DNS 流量後,下一步應該使用 Ldp.exe 實用程序驗證與 Active Directory 的 LDAP 連接。
驗證負載平衡器配置
負載平衡器的主要用途是確保工作負載在伺服器陣列中的所有伺服器之間均勻分配。例如,假設您的伺服器陣列中有四台伺服器,有 100 個用戶登錄到 Communicator Web Access。如果您已經採用硬體負載平衡並且負載平衡已經配置正確,則每台伺服器應該處理 25 個會話(總共 100 個會話,除以 4 台伺服器)。
要驗證負載平衡配置,應進行一系列測試,每次測試通過兩個用戶帳戶(用戶 A 和用戶 B)和最多兩台 Communicator Web Access 伺服器進行。(因為如果使用兩台以上的伺服器,那麼您可能遇到的問題的根源就更加難以追蹤。)如果伺服器陣列中有兩台以上的伺服器,應該在每個可能的計算機對上重復測試過程。例如,假設伺服器陣列由以下計算機組成:
伺服器 A
伺服器 B
伺服器 C
伺服器 D
在這種情況下,您需要運行的測試涉及以下計算機對:
I. 多台伺服器負載均衡的壓力測試要怎麼做
負載均衡是演算法上的問題,按常規軟體測試的方式來。
如果負載沒問題,那理論上壓力測試只要測單個服務就行了。
J. jmeter壓力測試實現負載均衡
文章來源於:https://blog.csdn.net/russ44/article/details/54729461
Jmeter 是java 應用,對於CPU和內存的消耗比較大,因此,當需要模擬數以千計的並發用戶時,使用單台機器模擬所有的並發用戶就有些力不從心,甚至會引起JAVA內存溢出錯誤。為了讓jmeter工具提供更大的負載能力,jmeter短小精悍一有了使用多台機器同時產生負載的機制。
那麼,是如何實現多台負載機同時運行的呢?當然不會多個人坐在多台負載機面前,一喊開始,大家同時啟動jmeter。這種方式很笨,也很難達到真正的同步。其實,我們通過單個jmeter 客戶端就可以控制多個遠程的jmeter伺服器,使它們同步的對伺服器進行壓力測試。
通過遠程運行jmeter,測試人員可以跨越多台低端計算機復制測試,這樣就可以模擬一個比較大的伺服器壓力,一個jmeter客戶端實例,理論上可以控制任意多的遠程jmeter實例,並通過他們收集測試數據。這樣一樣,就有了如下特性:
* 保存測試采樣數據到本地機器
* 通過單台機器管理多個jmeter執行引擎。
* 沒有必要將測試計劃復制到每一台機器,jmeter GUI客戶端會將它發往每一台jmeter伺服器。
* 每一台jmeter遠程伺服器都執行相同的測試計劃,jmeter不會在執行期間做負載均衡,每一台伺服器都會完整地運行測試計劃。
在1.4G Hz~3GHz 的CPU 、1GB 內存的 JMeter 客戶端上,可以處理線程 100~300。但是Web Service 例外。XML處理是 CPU 運算密集的,會迅速消耗掉所有的CPU 。一般來說,以XML技術為核心的應用系統,其性能將是普通Web 應用的 10%~25% 。另外,如果所有負載由一台機器產生,網卡和交換機埠都可能產生瓶頸,所以一個JMeter 客戶端線程數不應超過 100 。
採用JMeter 遠程模式並不會比獨立運行相同數目的非GUI 測試更耗費資源。但是,如果使用大量的JMeter 遠程伺服器,可能會導致客戶端過載,或者網路連接發生擁塞。
使用多台機器產生負載的操作步驟如下:
(1)在所有期望運行jmeter作為 負載生成器的機器上安裝jmeter, 並確定其中一台機器作為 controller ,其他的的機器作為agent 。
(2) 運行所有 agent 機器上的jmeter-server 文件(假定使用兩台機器192.168.9.99 和192.168.9.130 作為agent)
(3)在controller機器的jmeter的bin目錄下,找到jmeter.properties 文件,編輯該文件:
查找:
remote_hosts=127.0.0.1
修改為:
remote_hosts=192.168.9.99:1099,192.168.9.130:1099
這里要特別注意埠後,有些資料說明埠1644為jmeter的controller 和agent 之間進行通信的默認RMI埠號,但是在測試時發現,設置為1644運行不成功,改成1099後運行通過。另外還要留意agent的機子是否開啟了防火牆等。
(4)啟動controller 機子上的jmeter應用jmeter.bat,選擇菜單「運行」--->「遠程啟動」,來分別啟動agent ,也可以直接選擇「遠程全部啟動」來將所有的agent啟動。
遇到的常見問題:
1、在Controller端上控制某台機器Run,提示"Bad call to remote host"。
解決方法:檢查被控制機器上的jmeter-server有沒有啟動,或者JMeter.properties中remote_hosts的配置錯誤。
2、Agent機器啟動Jmeter_server.bat時,後台提示:"could not find ApacheJmeter_core.jar"
解決方法:確定在Agent機器安裝jdk,並設置環境變數
3、遠程啟動時,報錯:
ERROR - jmeter.gui.action.RemoteStart: Failed to initialise remote engine java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is:
java.net.ConnectException: Connection refused: connect
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source)
at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source)
at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source)
at sun.rmi.server.UnicastRef.newCall(Unknown Source)
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at java.rmi.Naming.lookup(Unknown Source)
at org.apache.jmeter.engine.ClientJMeterEngine.getEngine(ClientJMeterEngine.java:54)
at org.apache.jmeter.engine.ClientJMeterEngine.(ClientJMeterEngine.java:67)
at org.apache.jmeter.gui.action.RemoteStart.doRemoteInit(RemoteStart.java:180)
at org.apache.jmeter.gui.action.RemoteStart.doAction(RemoteStart.java:80)
at org.apache.jmeter.gui.action.ActionRouter.performAction(ActionRouter.java:81)
這個問題終於被我解決了,其實原因好簡單呀。只要將本機的jmter-server.bat執行即可。要是在jmeter.properties配置的地方寫了127.0.0.1 的話 就要開本機的 jmeter-sever.bat. 不寫的話 就不用開了
4、查看1099埠是否被佔用
netstat -ano | findstr "1099"
tasklist | findstr "1099"
其它說明:
1、調度機(master)和執行機(slave)最好分開,由於master需要發送信息給slave並且會接收slave回傳回來的測試數據,所以mater自身會有消耗,所以建議單獨用一台機器作為mater。
2、參數文件:如果使用csv進行參數化,那麼需要把參數文件在每台slave上拷一份且路徑需要設置成一樣的。
3、每台機器上安裝的Jmeter版本和插件最好都一致,否則會出一些意外的問題。