1. 程式人生 > >centos中,內核優化。適合用於優化WEB服務器等TCP/IP連接多的服務器

centos中,內核優化。適合用於優化WEB服務器等TCP/IP連接多的服務器

內核優化 centos 優化

這個參數表示操作系統允許TIME_WAIT套接字數量的最大值,如果超過這個數字,TIME_WAIT套接字將立刻被清除並打印警告信息。默認180000,過多TIME_WAIT套接字會使Web服務器變慢。
net.ipv4.tcp_max_tw_buckets = 1000

缺省值為1,使用 Selective ACK﹐它可以用來查找特定的遺失的數據報--- 因此有助於快速恢復狀態。
net.ipv4.tcp_sack = 1

該文件表示設置tcp/ip會話的滑動窗口大小是否可變。參數值為布爾值,為1時表示可變,為0時表示不可變。
net.ipv4.tcp_window_scaling = 1

這個參數定義了TCP接受緩存(用於TCP接收滑動窗口)的最小值,默認值,最大值。

net.ipv4.tcp_rmem = 4096 8388608 16777216

這個參數定義了TCP發送緩存(用於TCP發送滑動窗口)的最小值,默認值,最大值。
net.ipv4.tcp_wmem = 4096 8388608 16777216

表示SYN隊列的長度,默認為1024,加大隊列長度為65536,可以容納最多等待連接的網絡連接數。
net.ipv4.tcp_max_syn_backlog = 65536

當網卡接收數據包的速度大於內核處理的速度時,會有一個隊列保存這些數據包。這個參數表示該隊列的最大值。默認是1000
net.core.netdev_max_backlog = 32768

listen()的默認參數,掛起請求的最大數量.默認是128.對繁忙的服務器,增加該值有助於網絡性能.可調整到8192.

net.core.somaxconn = 65535

這個參數表示內核套接字接收緩存區默認的大小。
net.core.wmem_default = 8388608

net.core.rmem_default = 8388608
這個參數表示內核套接字(socket)讀緩存區(buffer)默認的最大大小。
net.core.rmem_max = 16777216

這個參數表示內核套接字(socket)寫緩存區(buffer)默認的最大大小。
net.core.wmem_max = 16777216

在近端丟棄TCP連接之前﹐要進行多少次重試。默認值是7個﹐相當於 50秒 - 16分鐘﹐視 RTO 而定。如果您的系統是負載很大的web服務器﹐那麽也許需要降低該值﹐這類 sockets 可能會耗費大量的資源

net.ipv4.tcp_orphan_retries = 3

該文件表示是否啟用以一種比超時重發更精確的方法(請參閱 RFC 1323)來啟用對 RTT 的計算;為了實現更好的性能應該啟用這個選項。缺省值為1
net.ipv4.tcp_timestamps = 1

減少處於FIN-WAIT-2連接狀態的時間,使系統可以處理更多的連接。
如果套接字由本端要求關閉,這個參數決定了它保持在FIN-WAIT-2狀態的時間。
對端可以出錯並永遠不關閉連接,甚至意外當機,缺省值是60秒。
2.2 內核的通常值是180秒,你可以按這個設置,但要記住的是,即使你的機器是一個輕載的WEB服務器,也有因為大量的死套接字而內存溢出的風險,FIN-WAIT-2的危險性比FIN-WAIT-1要小,因為它最多只能吃掉1.5K內存,但是它們的生存期長些。
net.ipv4.tcp_fin_timeout = 20

減少系統SYN連接重試次數(默認是5);為了打開對端的連接,內核需要發送一個SYN並附帶一個回應前面一個SYN的ACK。也就是所謂三次握手中的第二次握手。這個設置決定了內核放棄連接之前發送SYN+ACK包的數量。
net.ipv4.tcp_synack_retries = 2

在內核放棄建立連接之前發送SYN包的數量。
net.ipv4.tcp_syn_retries = 2

表示開啟SYN Cookies。當出現SYN等待隊列溢出時,啟用cookies來處理,可防範少量SYN攻擊,默認為0,表示關閉。
net.ipv4.tcp_syncookies = 1

表示開啟TCP連接中TIME-WAIT sockets的快速收回功能,默認為 0 ,表示關閉。
net.ipv4.tcp_tw_recycle = 1

表示開啟重用。允許將TIME-WAIT sockets重新用於新的 TCP 連接,默認為 0 表示關閉。
net.ipv4.tcp_tw_reuse = 1

系統所能處理不屬於任何進程的TCP sockets最大數量。假如超過這個數量,那麽不屬於任何進程的連接會被立即reset,並同時顯示警告信息。之所以要設定這個限制,純粹為了抵禦那些簡單的 DoS 攻擊,千萬不要依賴這個或是人為的降低這個限制。缺省設置:8192
net.ipv4.tcp_max_orphans = 65535

個參數定義了在UDP和TCP連接中本地端口的取值範圍,即允許系統打開的端口範圍。表示用於向外連接的端口範圍。缺省情況下很小:32768到61000
net.ipv4.ip_local_port_range = 1024 65000

secure config

關閉重定向。如果主機所在的網絡有多個路由器,你將其中一個設為缺省網關,但該網關在收到你的ip包時,發現該ip包必須經過另外一個路由器,於是該網關就給你的主機發一個“重定向”的icmp包,告訴主機把包轉發到另外一個路由器。1表示主機接受這樣的重定向包,0表示忽略;linux默認是1,可以設位0以消除隱患。
net.ipv4.conf.default.secure_redirects=0
net.ipv4.conf.default.accept_redirects=0
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.default.rp_filter=1

IPv6設置
net.ipv6.conf.all.accept_ra=0
net.ipv6.conf.default.accept_ra=0
net.ipv6.conf.all.accept_redirects=0
net.ipv6.conf.default.accept_redirects=0

另外附上一份完整版的sysctl.conf
net.ipv4.tcp_max_tw_buckets = 1000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 8388608 16777216
net.ipv4.tcp_wmem = 4096 8388608 16777216
net.ipv4.tcp_max_syn_backlog = 65536
net.core.netdev_max_backlog = 32768
net.core.somaxconn = 65535
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_orphan_retries = 3
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_fin_timeout = 20
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_orphans = 65535
net.ipv4.ip_local_port_range = 1024 65000

net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1

NET.IPV4.TCP_SYNCOOKIES = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296

centos中,內核優化。適合用於優化WEB服務器等TCP/IP連接多的服務器