1. 程式人生 > >Linux核心優化項

Linux核心優化項

net.ipv4.ip_forward = 0
#該檔案內容為0,表示禁止資料包轉發,1表示允許
net.ipv4.conf.default.rp_filter = 1
#是否忽略arp請求
net.ipv4.conf.default.accept_source_route = 0
#是否接受源路由(source route)
net.ipv4.conf.all.secure_redirects = 0
#如果伺服器不作為閘道器/路由器,該值建議設定為0
kernel.sysrq = 0
#是否開啟sysrq,0為disable sysrq, 1為enable sysrq completely
kernel.core_uses_pid = 1
#如果這個檔案的內容被配置成1,那麼即使core_pattern中沒有設定%p,最後生成的core dump檔名仍會加上程序ID。
net.ipv4.tcp_syncookies = 1
#開啟SYN Cookies,當出現SYN等待佇列溢位時,啟用cookies來處理
kernel.msgmnb = 65536
#指定核心中每個訊息佇列的最大位元組限制.
kernel.msgmax = 65536
#指定核心中單個訊息的最大長度(bytes).程序間的訊息傳遞是在核心的記憶體中進行的,不會交換到磁碟上,所以如果增大該值,則將增大作業系統所使用的記憶體數量.
kernel.shmmax = 68719476736
#指定共享記憶體片段的最大尺寸(bytes).
kernel.shmall = 4294967296
#指定可分配的共享記憶體數量.
net.ipv4.tcp_max_tw_buckets = 6000
#time_wait的數量,預設是180000
net.ipv4.tcp_sack = 1
#是否開啟有選擇性的應答(Selective Acknowledgement,簡稱SACK)
net.ipv4.tcp_window_scaling = 1
#是否開啟tcp滑動視窗
net.ipv4.tcp_rmem = 4096 87380 4194304
#指定tcp接收快取(receive memory buffers),有三個值。第一個是每一個TCP連線最小的接收buffer; 第二個值是每個TCP連線預設分配的接收buffer,該值將覆蓋net.core.rmem_default值;第三個是一個TCP連線最大可以分配的接收buffer
net.ipv4.tcp_wmem = 4096 16384 4194304
#指定tcp傳送快取(send memory buffers),有三個值,和net.ipv4.tcp_rmem類似
net.core.wmem_default = 8388608
#表示傳送套接字緩衝區大小的預設值(bytes)
net.core.rmem_default = 8388608
#表示接收套接字緩衝區大小的預設值(bytes)
net.core.rmem_max = 16777216
#表示接收套接字緩衝區大小的最大值(bytes)
net.core.wmem_max = 16777216
#表示傳送套接字緩衝區大小的最大值(bytes)
net.core.netdev_max_backlog = 262144
#每個網路介面接收資料包的速率比核心處理這些包的速率快時,允許送到佇列的資料包的最大數目
net.core.somaxconn = 262144
#web應用中listen函式的backlog預設會給我們核心引數的net.core.somaxconn限制到128,而nginx定義的NGX_LISTEN_BACKLOG預設為511,所以有必要調整這個值
net.ipv4.tcp_max_orphans = 3276800
#系統中最多有多少個TCP套接字不被關聯到任何一個使用者檔案控制代碼上,如果超過這個數字,孤兒連線將即刻被複位並打印出警告資訊,這個限制僅僅是為了防止簡單的Dos攻擊,不能過分依靠它或者人為地減小這個值,更應該增加這個值(如果增加了記憶體之後)
net.ipv4.tcp_max_syn_backlog = 262144
#記錄的那些尚未收到客戶端確認資訊的連線請求的最大值,對於有128M記憶體的系統而言,預設值是1024,小記憶體的系統這是128
net.ipv4.tcp_timestamps = 0
#時間戳可以避免序列號的卷繞,一個1Gbs的鏈路肯定會遇到以前用過的序列號,時間戳能夠讓核心接受這種"異常"的資料包,這裡需將其關掉
net.ipv4.tcp_synack_retries = 2
#為了開啟對端的連線,核心需要傳送一個SYN並附帶一個迴應前面一個SYN的ACK,也就是所謂的三次握手中的第二次握手,這個設定決定了核心放棄連線之前傳送SYN+ACK包的數量可以設定為1
net.ipv4.tcp_syn_retries = 2
#在核心放棄建立連線之前傳送SYN包的數量可以設定為1
net.ipv4.tcp_tw_recycle = 0
#time_wait快速回收 0為關閉,1為開啟,預設為關閉,開啟後提高伺服器效能,但會出現問題,問題見下一篇文章,建議關閉
net.ipv4.tcp_tw_reuse = 1
#開啟重用,允許Time-WAIT sockets重新用於新的TCP連線
net.ipv4.tcp_mem = 94500000 915000000 927000000
#確定 TCP 棧應該如何反映記憶體使用;每個值的單位都是記憶體頁(通常是 4KB)。 
net.ipv4.tcp_fin_timeout = 1
#如果套接字有本端要求關閉,這個引數決定了保持在FIN-WAIT-2狀態的時間,對端可以出錯並永遠關閉連線,甚至以外宕機,預設值是60秒,2.2核心的通常值是180秒,你可以按這個設定,但要記住的是,即時你的機器是一個輕載的WEB伺服器,也有因為大量的死套接字而記憶體溢位的風險,FIN-WAIT-2的危險性比FIN-WAIT-1要小,因為它最多隻能吃掉1.5K記憶體,但是他們生存期長些
net.ipv4.tcp_keepalive_time = 30
當keepzlived起作用的時候,TCP傳送keepzlived訊息的頻度,預設是兩小時,可以設定為30
net.ipv4.tcp_keepalive_probes=3
#如果對方不予應答,探測包的傳送次數
net.ipv4.tcp_orphan_retries=3
# 設定較小的數值,可以有效降低orphans的數量
net.ipv4.ip_local_port_range = 1024 65500
#允許系統開啟的埠範圍

#以下全部都是對iptables防火牆的優化,防火牆不開會有提示,可以忽略不理。:由於CentOS6.X系統中的模組名不是ip_conntrack,而是nf_conntrack,所以在/etc/sysctl.conf優化時,需要把net.ipv4.netfilter.ip_conntrack_max 這種老的引數,改成net.netfilter.nf_conntrack_max這樣才可以。
net.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_tcp_timeout_established = 180
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
vm.max_map_count = 655360