centos6.x sysctl優化選項

系統自帶


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
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296

內核socket優化項

(http://blog.csdn.net/lcx46/article/details/12418873)
net.core.netdev_max_backlog = 262144 #默認1000 #每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目
net.core.rmem_default = 8388608 #默認212992 接收套接字緩沖區大小的默認值(以字節為單位)
net.core.rmem_max = 16777216 #默認212992 接收套接字緩沖區大小的最大值(以字節為單位)
net.core.somaxconn = 262144 #默認128 用來限制監聽(LISTEN)隊列最大數據包的數量,超過這個數量就會導致鏈接超時或者觸發重傳機制
net.core.wmem_default = 8388608 #默認212992 發送套接字緩沖區大小的默認值(以字節為單位)
net.core.wmem_max = 16777216 #默認212992 發送套接字緩沖區大小的最大值(以字節為單位)

網卡橋接,kvm服務需要

net.bridge.bridge-nf-call-arptables = 0
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0

socket buffer

socket buffer的最大初始化值,默認10K;選項用于設定系統中最多有多少個TCP套接字不被關聯到任何一個用戶文件句柄上。如果超過這個數字,孤立連接將立即被復位并打印出警告信息。這個限制只是為了防止簡單的DoS攻擊。不能過分依靠這個限制甚至人為減小這個值,更多的情況下應該增加這個值,更應該增加這個值(如果增加了內存之后)。
net.ipv4.tcp_max_orphans = 3276800

TIME_WAIT狀態處理 抵抗syn flood攻擊

表示開啟SYN Cookies。當出現SYN等待隊列溢出時,啟用cookies來處理,可防范少量SYN攻擊,默認為1,表示開啟的;
net.ipv4.tcp_syncookies = 1
表示開啟重用。允許將TIME-WAIT sockets重新用于新的TCP連接,默認為0,表示關閉;客戶端是nat環境或者服務器在nat環境,最好不要開啟
net.ipv4.tcp_tw_reuse = 0
表示開啟TCP連接中TIME-WAIT sockets的快速回收,默認為0,表示關閉。
net.ipv4.tcp_tw_recycle = 0
開啟時間戳,默認系統開啟
net.ipv4.tcp_timestamps = 1

表示SYN隊列的長度,默認為1024,加大隊列長度為8192,可以容納更多等待連接的網絡連接數
net.ipv4.tcp_max_syn_backlog = 262144
**表示系統同時保持TIME_WAIT套接字的最大數量,如果超過這個數字,TIME_WAIT套接字將立刻被清除并打印警告信息。默認為180000,改為5000。對于Apache、Nginx等服務器,上幾行的參數可以很好地減少TIME_WAIT套接字數量,但是對于Squid,效果卻不大。此項參數可以控制TIME_WAIT套接字的最大數量,避免Squid服務器被大量的TIME_WAIT套接字拖死
net.ipv4.tcp_max_tw_buckets = 6000

syn-ack握手狀態重試次數,默認5,遭受syn-flood攻擊時改為1或2
net.ipv4.tcp_synack_retries = 3
對于一個新建連接,內核要發送多少個 SYN 連接請求才決定放棄。不應該大于255,默認值是5,對應于180秒左右。
net.ipv4.tcp_syn_retries = 1

使用 Selective ACK,管理TCP的選擇性應答,允許接收端向發送端傳遞關于字節流中丟失的序列號,減少了段丟失時需要重傳的段數目,當段丟失頻繁時,sack是很有益的。(這可以通過有選擇地應答亂序接收到的報文來提高性能(這樣可以讓發送者只發送丟失的報文段)。(對于廣域網通信來說這個選項應該啟用,但是這會增加對 CPU 的占用。)
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1

TCP 緩沖區選項

tcp寫buffer,可參考的優化值: 8192 436600 873200
net.ipv4.tcp_wmem = 8192 436600 873200
TCP讀buffer,可參考的優化值: 32768 436600 873200
net.ipv4.tcp_rmem = 32768 436600 873200
同樣有3個值,意思是:
net.ipv4.tcp_mem[0]:低于此值,TCP沒有內存壓力。
net.ipv4.tcp_mem[1]:在此值下,進入內存壓力階段。
net.ipv4.tcp_mem[2]:高于此值,TCP拒絕分配socket。
上述內存單位是頁,而不是字節。可參考的優化值是:786432 1048576 1572864
net.ipv4.tcp_mem = 786432 1048576 1572864

表示如果套接字由本端要求關閉,這個參數決定了它保持在FIN-WAIT-2狀態的時間
net.ipv4.tcp_fin_timeout = 30

TCP keepalive選項

表示當keepalive起用的時候,TCP發送keepalive消息的頻度。缺省是2小時,改為20分鐘,內核才發起probe;如果probe 15次(每次3秒)不成功,內核才徹底放棄,認為該連接已失效.對服務器而言,顯然上述值太大,百科聊天室有心跳檢測機制,檢測心跳的間隔一定要大于這個tcp_keepalive_intvl值
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_keepalive_probes = 3
表示用于向外連接的端口范圍。缺省情況下很小:32768到61000,改為1024到65000。
net.ipv4.ip_local_port_range = 1024 65535

系統使用的緩存大小占用內存比例閥值觸發IO同步

vm.swappiness = 10
vm.dirty_ratio = 10

iptables

net.nf_conntrack_max = 2000000
net.netfilter.nf_conntrack_max = 2000000
net.netfilter.nf_conntrack_tcp_timeout_established = 180net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120

inotify rsync優化

fs.inotify.max_queued_events=99999999
fs.inotify.max_user_watches=99999999
fs.inotify.max_user_instances=65535

簡化說明版

kernel.core_uses_pid = 1
kernel.msgmax = 65536
kernel.msgmnb = 65536
kernel.shmall = 4294967296
kernel.shmmax = 68719476736
kernel.sysrq = 0
net.core.netdev_max_backlog = 262144
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.somaxconn = 262144
net.core.wmem_default = 8388608
net.core.wmem_max = 16777216
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.ip_forward = 0
net.ipv4.tcp_max_orphans = 3276800
###TIME_WAIT狀態處理 抵抗syn flood攻擊
#表示開啟SYN Cookies。當出現SYN等待隊列溢出時,啟用cookies來處理,可防范少量SYN攻擊,默認為0,表示關閉;
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 0
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_timestamps = 1

net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_synack_retries = 3
net.ipv4.tcp_syn_retries = 1

net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1

net.ipv4.tcp_wmem = 8192 436600 873200
net.ipv4.tcp_rmem = 32768 436600 873200
net.ipv4.tcp_mem = 786432 1048576 1572864

net.ipv4.tcp_fin_timeout = 30
#表示當keepalive起用的時候,TCP發送keepalive消息的頻度。
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_keepalive_probes = 3

net.ipv4.ip_local_port_range = 1024 65535
###系統使用的緩存大小占用內存比例閥值觸發IO同步
vm.swappiness = 10
vm.dirty_ratio = 10
###iptables服務用到
net.nf_conntrack_max = 2000000
net.netfilter.nf_conntrack_max = 2000000

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容