限制连接数上涨的几个关键因素
系統端口限制
Linux系統端口為short類型表示,數值上限為65535。假設分配壓測業務可用端口范圍為1024 - 65535(1024以下系統預留),不考慮可能還運行著其它對外連接的服務,真正可用端口也就是64000左右(實際上,一般為了方便計算,一般直接設定為50000)。換言之,即在一臺機器上一個IP,可用同時對外建立64000網絡連接。
若是N個可用IP,理論上?64000*N,實際上還需要滿足:
- 充足內存支持
100w/6w = 17個IP地址?;500m * 100w/1024 = 50G內存?;服務器單一IP?承載100萬用戶:1臺主機+17臺從機?;若單機64G內存+17個IP可用IP地址?就一臺就能搞定。
- 為多IP的壓測端分配適合的權重,以便承擔更多的終端連接
Linux系統打開文件句柄限制
系統打開文件句柄,直接決定了可以同時打開的網絡連接數量,這個需要設置大一些,否則,你可能會在tsung_controller@IP.log文件中看到error_connect_emfile類似文件句柄不夠使用的警告,建議此值要大于?> N * 64000。
修改linux系統參數。vi /etc/security/limits.conf?添加
*?? ? ? soft? ? nofile? 655350
*?? ? ? hard? ? nofile? 655350
*?? ? ? soft? ? nproc? 655350
*?? ? ? hard? ? nproc? 655350
修改以后保存,注銷當前用戶,重新登錄,執行ulimit -a ,ok?,參數生效了:
注:nofile是代表最大文件打開數,nproc是操作系統級別對每個用戶創建的進程數的限制
內存的影響:
一個網絡Socket連接占用不多,但上萬個或數十萬等就不容小覷了,設置不當會導致內存直接成為屏障。
TCP接收、發送緩存
Tsung默認設置的網絡Socket發送接收緩沖區為16KB,一般夠用了。
[root@bogon ~]# cat /proc/sys/net/ipv4/tcp_rmem4096 87380 4194304此值會覆蓋Linux系統設置接收、發送緩沖大小。
粗略的默認值計算,一個網絡連接發送緩沖區?+?接收緩沖區,再加上進程處理連接堆棧占用,約40多K內存,為即計算方便,設定建立一個網絡連接消費50K內存。
先不考慮其它因素,若我們想要從機模擬10W個用戶,那么當前可用內存至少要剩余:50K * 100000 / 1000K = 5000M = 5G內存。針對一般服務器來講,完全可滿足要求(剩下事情就是要有兩個可用IP了)。
?
服務器查看TCP連接數
命令:
ss -tan|awk 'NR>1{++S[$1]}END{for (a in S) print a,S[a]}’通過上述命令可以統計出TCP連接中處于各個狀態的連接數,在經過Ng代理之后需要真實的連接數需要除以2,因為Client——Nginx——Mqtt其實算是兩個TCP連接。
?
?
轉載于:https://www.cnblogs.com/saryli/p/9821088.html
總結
以上是生活随笔為你收集整理的限制连接数上涨的几个关键因素的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (jmeter内置可调用的变量)jmet
- 下一篇: 通过数据库动态视图'v$',查看数据库信