linux設置最大連接數 1.最大文件打開數限制 2.修改profile 3.內核參數sysctl.conf的優化

1.最大文件打開數限制

查看前用戶進程打開的文件數限制,命令行執行:
ulimit -n
默認1024.
這表示當前用戶的每個進程最多允許同時打開1024個文件,這1024個文件中還得除去每個進程必然打開的標準輸入,標準輸出,標準錯誤,服務器監聽 socket,進程間通訊的unix域socket等文件,那麼剩下的可用於客戶端socket連接的文件數就只有大概1024-10=1014個左右。也就是說缺省情況下,基於Linux的通訊程序最多允許同時1014個TCP併發連接。
對於想支持更高數量的TCP併發連接的通訊處理程序,就必須修改Linux對當前用戶的進程同時打開的文件數量的軟限制(soft limit)和硬限制(hardlimit)。其中軟限制是指Linux在當前系統能夠承受的範圍內進一步限制用戶同時打開的文件數;硬限制則是根據系統硬件資源狀況(主要是系統內存)計算出來的系統最多可同時打開的文件數量。通常軟限制小於或等於硬限制。
vim /etc/security/limits.conf
limits.conf添加如下配置:

# 修改文件數
 * soft nofile 10240
 * hard nofile 10240
 # 修改進程數
 * soft noproc 60000
 * hard noproc 60000

可用’*'號表示修改所有用戶的限制;如果只針對某用戶,可指定了要修改哪個用戶的打開文件數限制,即:user1 soft nofile 10240;soft或hard指定要修改軟限制還是硬限制;10240則指定了想要修改的新的限制值,即最大打開文件數(請注意軟限制值要小於或等於硬限制)。
vim /etc/pam.d/login
添加:
session required /lib/security/pam_limits.so
這是告訴Linux在用戶完成系統登錄後,應該調用pam_limits.so模塊來設置系統對該用戶可使用的各種資源數量的最大限制(包括用戶可打開的最大文件數限制),而pam_limits.so模塊就會從/etc/security/limits.conf文件中讀取配置來設置這些限制值。

2.修改profile

vim /etc/profile
profile文件添加:

ulimit -SHn 64000

命令行執行生效:
source /etc/profile

3.內核參數sysctl.conf的優化

/etc/sysctl.conf 是用來控制linux網絡的配置文件,對於依賴網絡的程序(如web服務器和cache服務器)非常重要.
先備份原配置:
cp /etc/sysctl.conf /etc/sysctl.conf.bak
然後編輯sysctl.conf:
vim /etc/sysctl.conf
添加:

net.ipv4.ip_local_port_range = 1024 65535
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_window_scaling = 0
net.ipv4.tcp_sack = 0
net.core.netdev_max_backlog = 30000
net.ipv4.tcp_no_metrics_save = 1
net.core.somaxconn = 10240
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2

其中:
net.ipv4.ip_local_port_range = 1024 65535
如果按上述端口範圍進行設置,則理論上單獨一個進程最多可以同時建立60000多個TCP客戶端連接。
net.ipv4.ip_conntrack_max = 20000
如果按上述參數進行設置,則理論上單獨一個進程最多可以同時建立20000多個TCP客戶端連接。
選一個設置即可。
修改完畢後,執行下面命令,使配置立即生效,或者重啓:

sysctl -p /etc/sysctl.conf         #或者sysctl -p
sysctl -w net.ipv4.route.flush=1

參考文檔:
https://www.cnblogs.com/chenjiye/p/10281510.html
https://www.cnblogs.com/wanghuaijun/p/7214319.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章