linux伺服器部署了一個tcp服務,需要進行併發壓力測試 看看伺服器能支持多少個tcp長連接 預計會有50w個連接 需要設置linux 不然是無法支持這麼多連接的 如果達到這個值是無法建立新連接的 報錯信息一般為 too many open files 1 , fs.file-max linux系 ...
linux伺服器部署了一個tcp服務,需要進行併發壓力測試 看看伺服器能支持多少個tcp長連接 預計會有50w個連接 需要設置linux 不然是無法支持這麼多連接的 如果達到這個值是無法建立新連接的 報錯信息一般為 too many open files 1 , fs.file-max linux系統能打開的文件句柄數量 這個要增大 預設(65535)肯定是不夠的 查看命令 sysctl -a | grep -a "fs.file-max" 設置 echo "fs.file-max = 2100000" >> /etc/sysctl.conf //設置為110w sysctl -p //立即生效 2 ,ulimit 控制用戶級別能打開的文件句柄數量 查看命令 ulimit -n 設置 ulimit -n 1000000 //設置為100w 臨時生效 永久生效方法 vim /etc/security/limits.conf * hard nofile 1000000 //不要超過一百萬 值要小於 nr_open * soft nofile 1000000 重啟伺服器永久生效 * 如果要超過一百萬 還需要設置一個 /proc/sys/fs/nr_open 進程級別能打開的文件句柄數量 (linux內核2.6.25及之後 之前是無法設置的) 查看 cat /proc/sys/fs/nr_open 預設值為 1048576 即1024*1024 設置 echo "fs.nr_open = 1500000" >> /etc/sysctl.conf 要小於fs.file-max sysctl -p 使修改生效命令 查看tcp連接數命令 netstat -an | grep "ESTABLISHED" | wc -l 看可不可以達到一百萬 查看tcp連接數量命令(windows) netstat -an | find "ESTABLISHED" /c 但是在高併發情況下 連接一直增長不上了(2秒內有超過6w個客戶端連接過來) netstat -s | grep "SYNs to LISTEN" 查看tcp丟包數量 多次查看 發現丟包數量一直在增長 設置: echo 409600 > /proc/sys/net/ipv4/tcp_max_syn_backlog echo 409600 > /proc/sys/net/core/somaxconn