linux核心引數優化

2021-09-08 05:40:30 字數 4587 閱讀 9094

linux如何在系統執行時修改核心引數(/proc/sys 與 /etc/sysctl.conf)  redhat向員提供了非常好的方法,使我們可以在系統執行時更改核心引數,而不需要重新引導系統。這是通過/proc虛擬檔案系統實現的。/proc/sys目錄下存放著大多數的核心引數,並且設計成可以在系統執行的同時進行更改, 不過重新啟動機器後會失效,可以通過更改/proc/sys中核心引數對應的檔案 /etc/sysctl.conf 的核心引數來永久更改。下面我們以開啟核心的 ip**功能為例說明在系統執行時修改核心引數的兩種方法。ip**是指允許系統對**和目的地都不是本機的資料報通過網路

,redhat預設遮蔽此功能,在 需要用本機作為路由器

、nat等情況下需要開啟此功能。

方法一:修改/proc下核心引數檔案內容

直接修改核心引數ip_forward對應在/proc下的檔案/proc/sys/net/ipv4/ip_forward。用下面命令檢視ip_forward檔案內容:

# cat /proc/sys/net/ipv4/ip_forward

該檔案預設值0是禁止ip**,修改為1即開啟ip**功能。修改命令如下:

# echo 1 >/proc/sys/net/ipv4/ip_forward

修改過後就馬上生效,即核心已經開啟ip**功能。但如果系統重啟後則又恢復為預設值0,如果想永久開啟需要通過修改/etc/sysctl.conf檔案的內容來實現。

方法二.修改/etc/sysctl.conf檔案

預設sysctl.conf檔案中有乙個變數是

net.ipv4.ip_forward = 0

將後面值改為1,然後儲存檔案。因為每次系統啟動時初始化指令碼/etc/rc.d/rc.sysinit會讀取/etc/sysctl.conf檔案 的內容,所以修改後每次系統啟動時都會開啟ip**功能。但只是修改sysctl檔案不會馬上生效,如果想使修改馬上生效可以執行下面的命令:

# sysctl –p

在修改其他核心引數時可以向/etc/sysctl.conf檔案中新增相應變數即可,下面介紹/proc/sys下核心檔案與配置檔案 sysctl.conf中變數的對應關係,由於可以修改的核心引數都在/proc/sys目錄下,所以sysctl.conf的變數名省略了目錄的前面部分(/proc/sys)。

將/proc/sys中的檔案轉換成sysctl中的變數依據下面兩個簡單的規則:

1.去掉前面部分/proc/sys

2.將檔名中的斜槓變為點

這兩條規則可以將/proc/sys中的任一檔名轉換成sysctl中的變數名。

例如:/proc/sys/net/ipv4/ip_forward =》 net.ipv4.ip_forward

/proc/sys/kernel/hostname =》 kernel.hostname

可以使用下面命令查詢所有可修改的變數名

# sysctl –a

下面例舉幾個簡單的核心引數:

1./proc/sys/kernel/shmmax

該檔案指定核心所允許的最大共享記憶體段的大小。

2./proc/sys/kernel/threads-max

該檔案指定核心所能使用的執行緒的最大數目。

3./proc/sys/kernel/hostname

該檔案允許您配置網路主機名。

4./proc/sys/kernel/domainname

該檔案允許您配置網路網域名稱 

1、net.ipv4.tcp_max_syn_backlog = 65536

128m記憶體的系統而言,預設值是1024,低於128m小記憶體的系統則是128。

syn flood攻擊利用tcp協議散布握手的缺陷,偽造虛假源ip位址傳送大量tcp-syn半開啟連線到目標系統,最終導致目標系統socket佇列資源耗盡而無法接受新的連線。為了應付這種攻擊,現代unix系統中普遍採用多連線佇列處理的方式來緩衝(而不是解決)這種攻擊,是用乙個基本佇列處理正常的完全連線應用(connect()和accept() ),是用另乙個佇列單獨存放半開啟連線。

(例如syn-cookies/caches)聯合應用時,能夠比較有效的緩解小規模的syn flood攻擊(事實證明<1000p/s)加大syn佇列長度可以容納更多等待連線的網路連線數,一般遭受syn flood攻擊的**,都存在大量syn_recv狀態,所以調大tcp_max_syn_backlog值能增加抵抗syn攻擊的能力。

2、net.core.netdev_max_backlog =  32768

3、net.core.somaxconn = 32768

tcp連線數,可能需要提高連線儲備值,以應對大量突發入局連線請求的情況。如果同時接收到大量連線請求,使用較大的值會提高受支援的暫掛連線的數量,從而可減少連線失敗的數量。大的偵聽佇列對防止ddos攻擊也會有所幫助。掛起請求的最大數量預設是128。

4、net.core.wmem_default = 8388608

(以位元組為單位)

5、net.core.rmem_default = 8388608

(以位元組為單位)

6、net.core.rmem_max = 16777216

(以位元組為單位)

7、net.core.wmem_max = 16777216

(以位元組為單位)

8、net.ipv4.tcp_timestamps = 0

timestamps可以防範那些偽造的sequence號碼。一條1g的寬頻線路或許會重遇到帶out-of-line數值的舊sequence號碼(假如它是由於上次產生的)。時間戳能夠讓核心接受這種「異常」的資料報。這裡需要將其關掉,以提高效能。

9、net.ipv4.tcp_synack_retries = 2

syn,核心會傳送syn+ack資料報,以確認收到上乙個syn連線請求包。這是所謂的三次握手(threeway handshake)機制的第二個步驟。這裡決定核心在放棄連線之前所送出的syn+ack數目。不應該大於255,預設值是5,對應於180秒左右時間。(可以根據tcp_syn_retries來決定這個值)

10、net.ipv4.tcp_syn_retries = 2

syn連線請求才決定放棄。不應該大於255,預設值是5,對應於180秒左右時間。(對於大負載而物理通訊良好的網路而言,這個值偏高,可修改為2.這個值僅僅是針對對外的連線,對進來的連線,是由tcp_retries1 決定的)

11、net.ipv4.tcp_tw_recycle = 1

tcp連線中time-wait sockets的快速**,預設為0,表示關閉。

12、net.ipv4.tcp_tw_reuse = 1

time-wait sockets重新用於新的tcp連線,預設為0,表示關閉。這個對快速重啟動某些服務,而啟動後提示埠已經被使用的情形非常有幫助。

13、net.ipv4.tcp_mem = 94500000 915000000 927000000

tcp_mem有3個integer變數:low, pressure, high

low:當tcp使用了低於該值的記憶體頁面數時,tcp沒有記憶體壓力,tcp不會考慮釋放記憶體。(理想情況下,這個值應與指定給tcp_wmem的第2個值相匹配。這第2個值表明,最大頁面大小乘以最大併發請求數除以頁大小 (131072*300/4096)

pressure:當tcp使用了超過該值的記憶體頁面數量時,tcp試圖穩定其記憶體使用,進入pressure模式,當記憶體消耗低於low值時則退出pressure狀態。(理想情況下這個值應該是tcp可以使用的總緩衝區大小的最大值(204800*300/4096)

high:允許所有tcp sockets用於排隊緩衝資料報的頁面量。如果超過這個值,tcp連線將被拒絕,這就是為什麼不要令其過於保守(512000*300/4096)的原因了。在這種情況下,提供的價值很大,它能處理很多連線,是所預期的2.5倍;或者使現有連線能夠傳輸2.5倍的資料。

14、net.ipv4.tcp_max_orphans = 3276800

tcp sockets最大數量。假如超過這個數量﹐那麼不屬於任何程序的連線會被立即reset,並同時顯示警告資訊。之所以要設定這個限制﹐純粹為了抵禦那些簡單的dos攻擊﹐千萬不要依賴這個或是人為的降低這個限制

15、net.ipv4.ip_local_port_range = 1024  65535

1024~65000之間

16、net.ipv4.ip_conntrack_max = 10000

tcp連線數的限制(centos 5.6無此引數)

linux核心引數優化

linux核心引數優化 主要針對 etc sysctl.conf檔案 etc sysctl.conf是乙個允許你改變正在執行中的linux系統的介面。它包含一些tcp ip堆疊和虛擬記憶體系統的高階選項,可用來控制linux網路配置,由於 proc sys net目錄內容的臨時性,建議把tcpip引...

Linux核心引數優化

核心引數是使用者和系統核心之間互動的乙個介面,通過這個介面,使用者可以在系統執行的同時動態更新核心配置,而這些核心引數是通過linux proc檔案系統存在的。因此,可以通過調整proc檔案系統達到優化linux效能的目的。sysctl命令 被用於在核心執行時動態地修改核心的執行引數,可用的核心引數...

linux 核心引數優化

最近整理了一下核心引數 備用。哈 以下引數適用於請求量比較大的sever 端。編輯核心引數,執行sysctl p生效 vi etc sysctl.conf 當syn 很多時,tcp 的相關引數 可以調整再大一些。如下。net.ipv4.route.gc timeout 30 tcp連線超時時間 之前...