概述
所謂Linux服務器內核參數優化(適合Apache、Nginx、Squid等多種web應用,特殊的業務有可能需要做略微調整),主要是指在Linux系統中針對業務服務應用而進行的系統內核參數調整,優化并無一定的標準。
下面分兩個部分來介紹內核優化這一塊,第一部分主要講內核配置文件,大家根據需要做取舍就行,第二部分是我經常會在壓測高并發時做的一些內核優化,僅供參考。


一、內核配置文件
1、tcp套接字方面
#保持在FIN-WAIT-2狀態的時間,使系統可以處理更多連接。此參數值為整數,單位為秒。
net.ipv4.tcp_fin_timeout = 2
#開啟重用,允許將TIME_WAIT socket用于新的TCP連接。默認為0,表示關閉。
net.ipv4.tcp_tw_reuse = 1
#開啟TCP連接中TIME_WAIT socket的快速回收。默認值為0,表示關閉。
net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_syn_retries=1
#開啟SYN cookie,出現SYN等待隊列溢出時啟用cookie處理,防范少量的SYN攻擊。默認為0,表示關閉。
net.ipv4.tcp_syncookies = 1
#表示SYN隊列的長度,預設為1024,這里設置隊列長度為262 144,以容納更多等待連接。
net.ipv4.tcp_max_syn_backlog = 262144
#系統同時保持TIME_WAIT套接字的最大數量,如果超過這個數值將立刻被清楚并輸出警告信息。默認值為180000。對于squid來說效果不是很大,但可以控制TIME_WAIT套接字最大值,避免squid服務器被拖死。
net.ipv4.tcp_max_tw_buckets =5000
#表示系統中最多有多少TCP套接字不被關聯到任何一個用戶文件句柄上。如果超過這里設置的數字,連接就會復位并輸出警告信息。這個限制僅僅是為了防止簡單的DoS攻擊。此值不能太小。
net.ipv4.tcp_max_orphans = 16384
# 增加TCP最大緩沖區大小
net.ipv4.tcp_rmem=4096 87380 4194304 net.ipv4.tcp_wmem=4096 16384 4194304
2、keepalived方面
#keepalived啟用時TCP發送keepalived消息的拼度。默認2小時。
net.ipv4.tcp_keepalive_time = 600
#TCP發送keepalive探測以確定該連接已經斷開的次數。根據情形也可以適當地縮短此值。
net.ipv4.tcp_keepalive_probes = 5
#探測消息發送的頻率,乘以tcp_keepalive_probes就得到對于從開始探測以來沒有響應的連接殺除的時間。默認值為75秒,也就是沒有活動的連接將在大約11分鐘以后將被丟棄。對于普通應用來說,這個值有一些偏大,可以根據需要改小.特別是web類服務器需要改小該值。
net.ipv4.tcp_keepalive_intvl = 15
3、端口方面
#指定外部連接的端口范圍。默認值為32768 61000。
net.ipv4.ip_local_port_range = 1024 65000
#定義了系統中每一個端口最大的監聽隊列的長度, 對于一個經常處理新連接的高負載 web服務環境來說,默認值為128,偏小。
net.core.somaxconn = 16384
#表示當在每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許發送到隊列的數據包的最大數量。
net.core.netdev_max_backlog = 16384
#避免放大攻擊
net.ipv4.icmp_echo_ignore_broadcasts=1
PS:修改生效
vi /etc/sysctl.conf
增加合適參數后生效配置
sysctl -p


二、壓測調優參數參考
# 允許等待中的監聽, 設置系統最大socket連接數
echo 50000 >/proc/sys/net/core/somaxconn
#tcp連接快速回收:0-不加快tcp回收 1-加快tcp回收
echo 1 >/proc/sys/net/ipv4/tcp_tw_recycle
# tcp連接重用 :0-不啟用空tcp回收 1-空tcp回收
echo 1 >/proc/sys/net/ipv4/tcp_tw_reuse
#不抵御洪水攻擊:0-去除洪水攻擊抵御 1-啟用洪水攻擊抵御
echo 0 >/proc/sys/net/ipv4/tcp_syncookies
#設置系統最大文件訪問數量
echo "ulimit -n 50000" >> /etc/profile source /etc/profile
#設置用戶最大進程數
vi /etc/security/limits.conf
oracle soft nproc 16384 oracle hard nproc 16384


關于linux內核優化這一塊的內容就講到這了,大家根據需要去做取舍就行,特別是系統有高并發業務時,可以考慮適當去做優化。
版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。