Linux核心引數優化

2021-09-28 22:04:38 字數 3302 閱讀 3985

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

sysctl命令 被用於在核心執行時動態地修改核心的執行引數,可用的核心引數在目錄/proc/sys中。它包含一些tcp/ip堆疊和虛擬記憶體系統的高階選項,這可以讓有經驗的管理員提高引人注目的系統效能。用sysctl可以讀取設定超過五百個系統變數。

語法:sysctl(選項)(引數)

選項:-n:列印值時不列印關鍵字;

-e:忽略未知關鍵字錯誤;

-n:僅列印名稱;

-w:當改變sysctl設定時使用此項;

-p:從配置檔案「/etc/sysctl.conf」載入核心引數設定;

-a:列印當前所有可用的核心引數變數和值;

-a:以**方式列印當前所有可用的核心引數變數和值。

引數:變數=值:設定核心引數對應的變數值。

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

#sysctl -w net.ipv4.ip_forward=1

以上兩種方法都可能立即開啟路由功能,但如果系統重啟,或執行了# service network restart 命令,所設定的值即會丟失。

如果想永久保留配置,可以修改/etc/sysctl.conf檔案,將 net.ipv4.ip_forward=0改為net.ipv4.ip_forward=1

修改/proc下核心引數檔案內容,不能使用編輯器來修改核心引數檔案,理由是由於核心隨時可能更改這些檔案中的任意乙個,另外,這些核心引數檔案都是虛擬檔案,實際中不存在,因此不能使用編輯器進行編輯,而是使用echo命令,然後從命令行將輸出重定向至 /proc 下所選定的檔案中。

如:將timeout_timewait引數設定為30秒:

#echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout

引數修改後立即生效,但是重啟系統後,該引數又恢復成預設值。因此,想永久更改核心引數,需要修改/etc/sysctl.conf檔案

修改/etc/sysctl.conf檔案。檢查sysctl.conf檔案,如果已經包含需要修改的引數,則修改該引數的值,如果沒有需要修改的引數,在sysctl.conf檔案中新增引數。

如: net.ipv4.tcp_fin_timeout=30 儲存退出後,可以重啟機器使引數生效,如果想使引數馬上生效,也可以執行如下命令: # sysctl -p

#最大追蹤連線數修改 調優

net.nf_conntrack_max=1048576

net.netfilter.nf_conntrack_max=1048576

#雜湊表大小(桶的數量)

net.netfilter.nf_conntrack_buckets = 262144

#響應時間 調優

net.netfilter.nf_conntrack_icmp_timeout=10

net.netfilter.nf_conntrack_tcp_timeout_syn_recv=5

net.netfilter.nf_conntrack_tcp_timeout_syn_sent=5

net.netfilter.nf_conntrack_tcp_timeout_established=300

net.netfilter.nf_conntrack_tcp_timeout_fin_wait=10

net.netfilter.nf_conntrack_tcp_timeout_time_wait=10

net.netfilter.nf_conntrack_tcp_timeout_close_wait=10

net.netfilter.nf_conntrack_tcp_timeout_last_ack=10

# 訊息佇列的最大訊息大小,預設8k,建議64kb

kernel.msgmax = 65536

# 訊息佇列存放訊息的總位元組數

kernel.msgmnb = 163840

# tcp 緩衝區記憶體,連線數達到非常高時候需要配置好

net.ipv4.tcp_mem = 786432 2097152 3145728

net.ipv4.tcp_rmem = 4096 4096 16777216

net.ipv4.tcp_wmem = 4096 4096 16777216

# socket緩衝區預設值和最大值

net.core.wmem_default = 8388608

net.core.rmem_default = 8388608

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216

# accept等待佇列長度,適當,太大了堆積也無用

net.core.netdev_max_backlog = 65535

# 允許最大併發連線數,重要

net.core.somaxconn = 65535

# 不屬於任何程序的socket數目,不宜太大,防止攻擊

net.ipv4.tcp_max_orphans = 65535

# sync等待佇列長度,適當,太大了排隊也沒用

net.ipv4.tcp_max_syn_backlog = 65535

# 禁用timestamp,重要,高併發下設定為0

net.ipv4.tcp_timestamps = 0

# 傳送 sync+ack 的重試次數,不宜太大,5以內

net.ipv4.tcp_synack_retries = 1

# 傳送sync的重試次數,不宜太大,5以內

net.ipv4.tcp_syn_retries = 1

# 允許**tcp連線,重要,必須為1

net.ipv4.tcp_tw_recycle = 1

# 允許重用tcp連線,重要,必須為1

net.ipv4.tcp_tw_reuse = 1

# 服務端主動關閉後,客戶端釋放連線的超時,重要,<30

net.ipv4.tcp_fin_timeout = 5

# 允許tcp保持的空閒keepalive時長,不需要太長

net.ipv4.tcp_keepalive_time = 30

# 系統作為tcp客戶端連線自動使用的埠(start,end),可發起併發連線數為end-start

net.ipv4.ip_local_port_range = 10240 65535

注意:核心引數需要根據機器的配置進行優化調整,而不是所有的配置都是直接照搬的。

linux核心引數優化

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

linux核心引數優化

linux如何在系統執行時修改核心引數 proc sys 與 etc sysctl.conf redhat向員提供了非常好的方法,使我們可以在系統執行時更改核心引數,而不需要重新引導系統。這是通過 proc虛擬檔案系統實現的。proc sys目錄下存放著大多數的核心引數,並且設計成可以在系統執行的同...

linux 核心引數優化

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