這篇文章主要講解了“單機(jī)千萬(wàn)級(jí)MQTT消息測(cè)試分析”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“單機(jī)千萬(wàn)級(jí)MQTT消息測(cè)試分析”吧!
成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供惠濟(jì)網(wǎng)站建設(shè)、惠濟(jì)做網(wǎng)站、惠濟(jì)網(wǎng)站設(shè)計(jì)、惠濟(jì)網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、惠濟(jì)企業(yè)網(wǎng)站模板建站服務(wù),十年惠濟(jì)做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
| Dell Inc.
型號(hào) PowerEdge R430
CPU 8 CPUs x Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
內(nèi)存 64 GB ``//測(cè)試客戶端機(jī)器內(nèi)存升級(jí)到96 GB
需要測(cè)試千萬(wàn)級(jí)連接,確保測(cè)試工具獨(dú)占服務(wù)器,并硬件內(nèi)存大于或等于256GB,由于測(cè)試硬件資源受限,以400萬(wàn)連接數(shù)據(jù)測(cè)試結(jié)果作為參考依據(jù),單機(jī)千萬(wàn)連接完全有可能達(dá)到。當(dāng)商業(yè)應(yīng)用時(shí)需要考濾高連接的self-ddos問(wèn)題,應(yīng)該盡量設(shè)置更長(zhǎng)的客戶端keepalive值。
服務(wù)端系統(tǒng)參數(shù)調(diào)優(yōu)(Linux)
修改文件/etc/sysctl.conf
,配置網(wǎng)絡(luò)參數(shù)。
net.ipv4.tcp_wmem = 4096 87380 4161536
net.ipv4.tcp_rmem = 4096 87380 4161536
net.ipv4.tcp_mem = 786432 2097152 3145728
fs.file-max = 12000000 #一千兩百萬(wàn)
|
執(zhí)行/sbin/sysctl -p
即時(shí)生效。
echo 12000000 > /proc/sys/fs/nr_open #需root權(quán)限
/etc/systemd/system.conf 設(shè)置服務(wù)最大文件句柄數(shù):
DefaultLimitNOFILE=12000000
修改/etc/security/limits.conf
文件
* hard nofile 12000000
* soft nofile 12000000
* soft nproc 12000000
* hard nproc 12000000
需重啟系統(tǒng)生效,服務(wù)器操作系統(tǒng)參數(shù)調(diào)優(yōu)完成。關(guān)于啟動(dòng)CP7服務(wù)器端程序請(qǐng)參閱本章中的《程序安裝》小節(jié)
客戶端的參數(shù)調(diào)優(yōu)(Linux)
根據(jù)TCP/IP協(xié)議,由于端口是16位整數(shù),也就只能是0到 65535,而0到1023是預(yù)留端口,所以能分配的端口只是1024到65534,也就是64511個(gè)。一臺(tái)機(jī)器一個(gè)IP只能創(chuàng)建六萬(wàn)多個(gè)長(zhǎng)連接。 要想達(dá)到更多的客戶端連接,可以用更多的機(jī)器或者網(wǎng)卡,也可以使用虛擬IP來(lái)實(shí)現(xiàn),比如下面的命令增加了19個(gè)IP地址,其中一個(gè)給服務(wù)器用,其它18個(gè)給client,這樣可以產(chǎn)生18 * 60000 = 1080000個(gè)連接。本測(cè)試用例需要增加到一千萬(wàn)或以上的足夠IP。
root@:~# ifconfig
eth0 Link encap:Ethernet HWaddr 00:16:3e:0b:2e:a0
inet addr:x.x.x.x Bcast:x.x.x.x Mask:255.255.240.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4706185 errors:0 dropped:0 overruns:0 frame:0
TX packets:4705832 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1005604068 (1.0 GB) TX bytes:5556912863 (5.5 GB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:5875416 errors:0 dropped:0 overruns:0 frame:0
TX packets:5875416 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:3566710813 (3.5 GB) TX bytes:3566710813 (3.5 GB)
以上指令查看到網(wǎng)卡名稱為 eth0
ifconfig eth0:0 192.168.77.10 netmask 255.255.255.0 up
ifconfig eth0:1 192.168.77.11 netmask 255.255.255.0 up
ifconfig eth0:2 192.168.77.12 netmask 255.255.255.0 up
ifconfig eth0:3 192.168.77.13 netmask 255.255.255.0 up
ifconfig eth0:4 192.168.77.14 netmask 255.255.255.0 up
ifconfig eth0:5 192.168.77.15 netmask 255.255.255.0 up
ifconfig eth0:6 192.168.77.16 netmask 255.255.255.0 up
ifconfig eth0:7 192.168.77.17 netmask 255.255.255.0 up
ifconfig eth0:8 192.168.77.18 netmask 255.255.255.0 up
ifconfig eth0:9 192.168.77.19 netmask 255.255.255.0 up
以上指令操作增加虛擬IP,添加完成后通過(guò) ifconfig 指令查看確認(rèn)所有虛擬IP最已列出。
修改/etc/sysctl.conf
文件:
fs.file-max = 12000000
fs.nr_open = 12000000
net.ipv4.ip_local_port_range = 1024 65535
執(zhí)行/sbin/sysctl -p
即時(shí)生效。
echo 12000000 > /proc/sys/fs/nr_open #需root權(quán)限
_/etc/security/limits.conf_
配置
* soft nofile 12000000
* hard nofile 12000000
* soft nproc 12000000
* hard nproc 12000000
使用Coolpy7_benchmark測(cè)試客戶端測(cè)試四百萬(wàn)級(jí)連接
# 下載測(cè)試工具
git clone https:``//github.com/Coolpy7/coolpy7_benchmark.git
# 進(jìn)入bin文件夾
cd bin
# 啟動(dòng)Coolpy7靜連接測(cè)試工具
# 參數(shù)url: Coolpy7服務(wù)端所在服務(wù)器ip地址,默認(rèn)端口號(hào):1883
# 參數(shù)workers: 需要?jiǎng)?chuàng)建的客戶端連接數(shù)量
# 參數(shù)cid: mqtt連接客戶端(ClientId)前綴,工具會(huì)自動(dòng)以cid+WorkersId作為連接clientid值
# 參數(shù)topic: 連接成功后訂閱的topic主題(支持以%i取得workersid:例: mytopic%i)不進(jìn)行訂閱測(cè)試填寫(xiě)null字符串
# 參數(shù)keepalive: 連接ping時(shí)間間隔
# 參數(shù)clear: mqtt客戶端連接的clearsession屬性,當(dāng)設(shè)置為true時(shí)重連時(shí)不能再次訂閱qos0以上的主題
# 以下例示建立連接到192.168.200.238所在的Coolpy7服務(wù)器端,并創(chuàng)建400萬(wàn)個(gè)MQTT客戶端連接
./go_build_cp7_bench_sub_go_linux -workers=4000000 -cid=tqy -topic=null -qos=0 -url=tcp:``//192.168.200.238:1883 -keepalive=60000s -clear=true
| 客戶端連接數(shù)
系統(tǒng)使用內(nèi)存
RES使用內(nèi)存
|
VIRT使用內(nèi)存
|
CPU使用
|
網(wǎng)絡(luò)(進(jìn))
|
網(wǎng)絡(luò)(出)
| |
100萬(wàn)
|
4.5G
|
2633M
|
2789M
|
260/1600
|
2.8M
|
2M
| |
200萬(wàn)
|
10.3G
|
4009M
|
4152M
|
277/1600
|
2.98M
|
2.15M
| |
300萬(wàn)
|
14.7G
|
5517M
|
5682M
|
278/1600
|
3.05M
|
2.21M
| |
400萬(wàn)
|
19.3G
7055M
7231M
270/1600
2.91M
2.18M
|
測(cè)試時(shí)需時(shí)刻關(guān)注服務(wù)器端網(wǎng)絡(luò)資源使用情況,測(cè)試數(shù)據(jù)顯示在高連接數(shù)下ping/pong狀態(tài)下已占用極大的網(wǎng)絡(luò)帶寬,需根據(jù)當(dāng)前設(shè)備的硬件資源合理設(shè)置最大連接數(shù)量以保證系統(tǒng)的穩(wěn)定長(zhǎng)期運(yùn)行
相關(guān)測(cè)試截圖
服務(wù)器端啟動(dòng)并host于1883 TCP端口
通過(guò)NLOAD工具監(jiān)測(cè)Coolpy7(連接時(shí))網(wǎng)絡(luò)資源占用情況
使用Coolpy_benchmark工具測(cè)試連接400萬(wàn)連接
從服務(wù)器端的硬件資源使用情況得出結(jié)論單機(jī)千萬(wàn)級(jí)連接即可實(shí)現(xiàn),如閣下有相關(guān)硬件設(shè)備實(shí)測(cè)千萬(wàn)級(jí)用例,請(qǐng)把測(cè)試結(jié)果告知Coolpy7官方。感謝!
測(cè)試工具開(kāi)源地址:https://github.com/Coolpy7/coolpy7_benchmark
工具會(huì)以1000為單位打印連接信息
工具啟動(dòng)后會(huì)一直創(chuàng)建參數(shù)指定的客戶端連接數(shù)
按應(yīng)用場(chǎng)景測(cè)試
MQTT 是一個(gè)設(shè)計(jì)得非常出色的傳輸層協(xié)議,在移動(dòng)消息、物聯(lián)網(wǎng)、車聯(lián)網(wǎng)、智能硬件甚至能源勘探等領(lǐng)域有著廣泛的應(yīng)用。1個(gè)字節(jié)報(bào)頭、2個(gè)字節(jié)心跳、消息 QoS 支持等設(shè)計(jì),非常適合在低帶寬、不可靠網(wǎng)絡(luò)、嵌入式設(shè)備上應(yīng)用。
不同的應(yīng)用有不同的系統(tǒng)要求,用戶使用Coolpy7消息服務(wù)器前,可以按自己的應(yīng)用場(chǎng)景進(jìn)行測(cè)試,而不是簡(jiǎn)單的連接壓力測(cè)試:
Android 消息推送: 推送消息廣播測(cè)試。
移動(dòng)即時(shí)消息應(yīng)用: 消息收發(fā)確認(rèn)測(cè)試。
智能硬件應(yīng)用: 消息的往返時(shí)延測(cè)試。
物聯(lián)網(wǎng)數(shù)據(jù)采集: 并發(fā)連接與吞吐測(cè)試。
感謝各位的閱讀,以上就是“單機(jī)千萬(wàn)級(jí)MQTT消息測(cè)試分析”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)單機(jī)千萬(wàn)級(jí)MQTT消息測(cè)試分析這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
網(wǎng)頁(yè)標(biāo)題:單機(jī)千萬(wàn)級(jí)MQTT消息測(cè)試分析
文章分享:http://aaarwkj.com/article26/jposjg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、營(yíng)銷型網(wǎng)站建設(shè)、建站公司、ChatGPT、網(wǎng)站營(yíng)銷、軟件開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)