記一次網關壓測實踐

在壓測一個項目時,一開始併發用戶數上不去。
大於兩個併發用戶數,就會有報錯,報錯如圖:
在這裏插入圖片描述
看意思是請求的端口地址不能被使用。
一點點排查,用命令:
netstat -ano|grep 端口號(應用服務端口號)|wc -l,發現積壓5萬多,這證明,線程沒有釋放tcp鏈接。
使用vi /etc/sysctl.conf,
發現這個文件中並沒設置tcp釋放時間,所以tcp鏈接釋放時間用的默認的5分鐘,這5分鐘內線程都不釋放鏈接,導致後面的請求訪問不通。
於是修改了釋放時間,如圖:
在這裏插入圖片描述
net.ipv4.tcp_timestamps=1
net.ipv4.tcp_tw_recycle=1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 200
在/etc/sysctl.conf文件最後添加上圖所示。
再次壓測,發現併發用戶數有所提高,但是併發用戶數在20以上,就開始報錯,報錯如圖:
在這裏插入圖片描述
繼續排查,經開發提醒,
使用命令:cat /proc/sys/net/ipv4/ip_local_port_range 查看端口範圍,還是使用默認的鏈接範圍,繼續修改,還是修改/etc/sysctl.conf這個文件,
在這裏插入圖片描述
加上:
net.ipv4.ip_local_port_range = 1024 65000,就是修改了端口範圍
修改完繼續壓測,效果還是不理想。
沒辦法了,繼續排查,開發無意中提了一嘴,文件描述符,
於是使用命令:ulimit -n 查看linux系統的最大文件描述符,爲1024,這個太小了,同時才能打開1024個文件,
如果想永久變更需要修改/etc/security/limits.conf 文件,如下:
vi /etc/security/limits.conf

  • hard nofile 102400
  • soft nofile 102400
    於是修改成102400,再次壓測,50個併發用戶數,tps12000以上,響應時間3.5ms,搞定!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章