在上一篇,秒殺系統架構設計與實現(3)--20萬QPS(https://blog.csdn.net/luozhonghua2014/article/details/80404386)我們遇到jmeter被假死死了,這裏有2個原因,一是jmeter原本是java寫的,heap受硬件限制需要調優,二是單機無法分解超大併發比如100萬+併發壓測,因此,我們分二部走,首先我們需要進行jmeter分佈式部署和調配,二是我們需要對每臺執行機進行深度jmeter jvm調優,掠盡所有執行及的硬件和網絡資源
首先我們來看如何進行jmeter分佈式部署和配置
先殺個原理圖
這個圖說明的是要一臺控制機,然後由這臺控制機發壓測腳本到每臺遠程執行機,然後由控制機收集執行機結果
1、配置控制機
其實很簡單(不過配置控制機和執行機前,先在每臺物理機上配置好jdk和jmeter哦,不懂問度娘吧)
另外,如果裝有
請禁用,否則會爆出與真實的控制物理機不同的ip,造成無法telnet通
Created remote object: UnicastServerRef2 [liveRef: [endpoint:[192.168.56.1:49337
,SSLRMIServerSocketFactory(host=WIN-20170218BWC/192.168.56.1, keyStoreLocation=r
mi_keystore.jks, type=JKS, trustStoreLocation=rmi_keystore.jks, type=JKS, alias=
rmi),SSLRMIClientSocketFactory(keyStoreLocation=rmi_keystore.jks, type=JKS, trus
tStoreLocation=rmi_keystore.jks, type=JKS, alias=rmi)](local),objID:[-371cc2e2:1
6387b0439e:-7fff, -7372510158384799491]]]
配置完了啓動,但是會報錯,提醒要加密了,具體操作也很簡單,如圖所示,雙擊create-rmi-keystore.bat
根據提示一直填下去,遇到yes與No就直接填:Y 然後回車就ok了,要注意:生成的rmi_keystore.jks複製到每一臺執行物理機
的jmeter bin目錄下去
然後控制機的再啓動 jmeter-server.bat
最後配置jmeter客戶端腳本
比如:
注意:113是控制機也是應用服務器,如果nginx是114物理機那麼就要把113改成114
現在還不能啓動執行機,啓動執行機的前提是要配置好各個執行機的jmeter環境 jdk8和配置,比如前面說的要複製控制機的密鑰文件
2 、執行機115
啓動
好了,至此控制機和執行機分佈式部署和配置已完成,現在我們壓測一把
在控制機配置腳本
壓5萬QPS執行機115(硬件配置低端)已會出內存溢出
我們再看控制機結果
再看最後數據有沒有問題
數據完整,說明115機一直強悍,應用架構扛住100萬QPS還可以繼續用n個執行物理機來做,當然我們的控制機也可以壓個20萬QPS也不成問題,好了,我們最後依然需要調優不同的執行機jvm來達成100萬+QPS,到底看看秒殺系統架構設計與實現能抗多少
延伸閱讀:
https://blog.csdn.net/luozhonghua2014/article/details/80362614 秒殺系統搭建與部署(1)---開篇
https://blog.csdn.net/luozhonghua2014/article/details/80384061 1萬+QPS秒殺最低成本架構與實現
https://blog.csdn.net/luozhonghua2014/article/details/80387285 10萬+QPS秒殺限流組件設計與實現
https://blog.csdn.net/luozhonghua2014/article/details/80396035 秒殺系統架構設計與實現(2)--15萬QPS
https://blog.csdn.net/luozhonghua2014/article/details/80404386 秒殺系統架構設計與實現(3)--20萬QPS
參考
https://www.cnblogs.com/suntingme/p/5995721.html