全部產品
Search
文件中心

Alibaba Cloud Linux:系統配置最佳化說明

更新時間:Nov 05, 2025

本文介紹Alibaba Cloud Linux 3系統的最佳化配置和常見系統配置參數。您可以根據實際需求調整核心參數,以滿足特定的業務情境。

作業系統限制

Alibaba Cloud Linux 3。

重要

在修改核心參數前,您需要注意:

  • 從實際需求出發,盡量有相關資料的支撐,不建議您隨意調整核心參數。

  • 瞭解參數的具體作用,需注意不同類型或版本環境中,核心參數可能有所不同。

Alibaba Cloud Linux 3最佳化配置

Alibaba Cloud Linux 3作業系統對以下系統配置參數進行了最佳化。

提升效能

配置項

說明

net.ipv4.tcp_timeout_init

1000

TCP逾時重傳初始值。

最小值為2 HZ。

重要

Alibaba Cloud Linux 3系統自研特性,不承諾長期維護,Alibaba Cloud Linux 4 開始,該系統配置已廢棄。

net.ipv4.tcp_synack_timeout_init

1000

SYN-ACK初始逾時時間。

最小值為2 HZ。

第一次重傳後,逾時時間將加倍。

重要

Alibaba Cloud Linux 3系統自研特性,不承諾長期維護,Alibaba Cloud Linux 4 開始,該系統配置已廢棄。

net.ipv4.tcp_synack_timeout_max

120000

SYN-ACK逾時時間最大值。

最小值為2 HZ。

tcp_synack_timeout_init在重傳SYN-ACK報文時RTO會成倍增加,但最大不能超過tcp_synack_timeout_max

重要

Alibaba Cloud Linux 3系統自研特性,不承諾長期維護,Alibaba Cloud Linux 4 開始,該系統配置已廢棄。

net.ipv4.tcp_ato_min

40

ACK逾時時間。

通過修改sysctl參數靈活地控制ACK逾時時間。

取值範圍:4 ms~200 ms。

重要

Alibaba Cloud Linux 3系統自研特性,不承諾長期維護,Alibaba Cloud Linux 4 開始,該系統配置已廢棄。

net.ipv4.tcp_init_cwnd

10

TCP初始擁塞視窗大小。

重要

Alibaba Cloud Linux 3系統自研特性,不承諾長期維護,Alibaba Cloud Linux 4 開始,該系統配置已廢棄。

net.ipv4.tcp_synack_retries

2

服務端響應SYN-ACK後未收到最終的ACK時需要重試的次數。

網路品質良好情況下,進行3次重試大約需要7秒。

net.ipv4.tcp_slow_start_after_idle

0

TCP接收資料空閑之後是否需要重新慢啟動。取值範圍:

  • 1:是。

  • 0:否。

/sys/kernel/mm/transparent_hugepage/hugetext_enabled

0

控制代碼大頁特性。取值範圍:

  • 0:關閉代碼大頁。

  • 1:僅開啟二進位和動態庫大頁。

  • 2:僅開啟可執行匿名大頁。

  • 3:同時開啟以上兩類大頁。

開啟代碼大頁可以降低程式的iTLB miss,提升資料庫、大型應用程式等大程式碼片段業務情境效能。

重要

Alibaba Cloud Linux 3系統自研特性,不承諾長期維護。

提高資源使用率

配置項

說明

net.ipv4.tcp_syn_retries

4

用戶端發送SYN後未收到SYN-ACK時需要重試的次數。

在逾時重傳初始值為1秒的情況下,進行4次重傳大約需要15秒,最終逾時大約需要31秒。

net.ipv4.tcp_retries2

8

影響活躍TCP串連未收到ACK時重傳的總逾時時間。

在初始RTO為200ms的情況下,進行8次重傳大約需要51秒,最終逾時大約需要102秒。

net.ipv4.tcp_tw_timeout

60

socket在TIME_WAIT狀態的逾時時間。

取值範圍:1秒~600秒。

具體操作,請參見修改TCP TIME-WAIT逾時時間

重要

Alibaba Cloud Linux 3系統自研特性,不承諾長期維護,Alibaba Cloud Linux 4 開始,該系統配置已廢棄。

net.ipv4.tcp_max_tw_buckets

5000

允許最多timewait狀態的TCP串連數。

TIME_WAIT狀態的串連會佔用用戶端與同一服務端建立串連的連接埠範圍(用戶端與同一服務端ip:port串連的最大連接埠數由net.ipv4.ip_local_port_range確定)。當大量TIME_WAIT狀態的串連佔用用戶端連接埠時,會導致用戶端在調用connect()時分配連接埠失敗,最終導致用戶端建立串連失敗。更多資訊,請參見為什麼Linux系統的ECS執行個體中出現大量“TCP: time wait bucket table overflow”錯誤?

網路安全

配置項

說明

net.ipv4.conf.all.rp_filter

0

當前所有網卡的反向路由校正控制。取值範圍:

  • 0:關閉反向路由校正。

  • 1:開啟嚴格的反向路由校正。開啟後,網卡會對每一個傳入的資料包進行校正,如果資料包的反向路由與接收介面不匹配,校正失敗後將丟棄資料包。

  • 2:不嚴謹的反向路由校正。網卡對每個進來的資料包校正源地址是否可達,如果反向路由可以通過任何介面到達,那麼校正成功,否則校正失敗後將丟棄資料包。

警告

當參數設定為1時,可能會發生丟包的情況。在存在多個網卡的情況下,如果待發送的報文通過的路由出口網卡與報文被接收時的入口網卡不同,則會導致報文被丟棄。因此,在多網卡系統中,不建議啟用該設定。

net.ipv4.conf.default.rp_filter

0

建立網卡的反向路由校正控制。取值範圍:

  • 0:關閉反向路由校正。

  • 1:開啟嚴格的反向路由校正。開啟後,網卡會對每一個傳入的資料包進行校正,如果資料包的反向路由與接收介面不匹配,校正失敗後將丟棄資料包。

  • 2:不嚴謹的反向路由校正。網卡對每個進來的資料包校正源地址是否可達,如果反向路由可以通過任何介面到達,那麼校正成功,否則校正失敗後將丟棄資料包。

警告

當參數設定為1時,可能會發生丟包的情況。在存在多個網卡的情況下,如果待發送的報文通過的路由出口網卡與報文被接收時的入口網卡不同,則會導致報文被丟棄。因此,在多網卡系統中,不建議啟用該設定。

net.ipv4.conf.default.arp_announce

2

當前所有網卡影響ARP請求中源IP地址的選擇。取值範圍:

  • 0:預設行為。在預設情況下,系統將使用任意可用的源IP地址作為介面的首選地址。在這種模式下,當發送ARP請求時,核心不會嚴格限制ARP請求中使用的源IP地址,而是可能選擇任何可用的本地地址作為源IP。

  • 1:strict 模式。盡量避免使用不相關的源IP地址。核心在選擇源IP地址時,會嘗試使用與目標地址在同一子網內的地址。如果沒有這樣的地址,它還是會使用介面的主地址。

  • 2:最strict 模式。必須使用發送介面上的IP地址。核心首先按照arp_announce=1的方式尋找,若沒有尋找到,則強制要求ARP請求使用的源IP地址必須是發送ARP請求的介面的IP地址。如果在這個介面上沒有合適的IP地址,則不會發送ARP請求。

net.ipv4.conf.all.arp_announce

2

新增網卡影響ARP請求中源IP地址的選擇。取值範圍:

  • 0:預設行為。在預設情況下,系統將使用任意可用的源IP地址作為介面的首選地址。在這種模式下,當發送ARP請求時,核心不會嚴格限制ARP請求中使用的源IP地址,而是可能選擇任何可用的本地地址作為源IP。

  • 1:strict 模式。盡量避免使用不相關的源IP地址。核心在選擇源IP地址時,會嘗試使用與目標地址在同一子網內的地址。如果沒有這樣的地址,它還是會使用介面的主地址。

  • 2:最strict 模式。必須使用發送介面上的IP地址。核心首先按照arp_announce=1的方式尋找,若沒有尋找到,則強制要求ARP請求使用的源IP地址必須是發送ARP請求的介面的IP地址。如果在這個介面上沒有合適的IP地址,則不會發送ARP請求。

net.ipv4.tcp_syncookies

1

SYN Flood防護控制。取值範圍:

  • 0:關閉TCP核心SYN Flood防護功能。

  • 1:開啟TCP核心防護,防止SYN Flood攻擊。

  • 2:無條件開啟TCP核心防護,防止SYN Flood攻擊,用於測試情境。

Alibaba Cloud Linux 3其他常見系統配置說明

提升效能

配置項

預設值

說明

net.ipv4.ip_local_port_range

32768 60999

連接埠號碼範圍。

在用戶端建立串連時,TCP/UDP協議允許根據實際需求修改本地連接埠號碼。當該範圍內的連接埠號碼大部分被佔用完時,核心線性搜尋新連接埠可能導致CPU佔用率升高。

net.ipv4.tcp_rmem

4096 131072 6291456

單個tcp socketrecvbuf的大小。單位:位元組。

初始值與執行個體規格無關。第一個是最小值,第二個是預設大小,第三個是最大值。推薦將其調大,但需考慮執行個體的記憶體使用量情況。

net.ipv4.tcp_wmem

4096 16384 4194304

單個tcp socketsendbuf的大小。單位:位元組。

初始值與執行個體規格無關。第一個是最小值,第二個是預設大小,第三個是最大值。推薦將其調大,但需考慮執行個體的記憶體使用量情況。

net.core.netdev_max_backlog

1000

percpu用來儲存skb隊列的長度。

主要用於RPS或者同一主機內部通訊的緩衝隊列,比如loopbackveth

net.core.somaxconn

4096

單個socket最大的Listen backlog隊列長度。

nginx這類處理大量短連線應用程式,建議將其值調大。

net.core.rmem_max

212992

單個socket上允許的最大recvbuf的大小。

主要用於處理大量串連在單個udp socket的情境。

在TCP中,這個選項僅在使用者調用setsockopt()配置SO_RCVBUF時使用,使用者佈建的recvbuf不能超過該值。若使用者沒有調用setsockopt(),則tcp recvbuf只受net.ipv4.tcp_rmem的限制。

net.core.wmem_max

212992

單個socket上允許的最大sendbuf的大小。

主要用於處理大量串連在單個udp socket的情境。

在TCP中,這個選項僅在使用者調用setsockopt()配置SO_SNDBUF時使用,使用者佈建的sendbuf不能超過該值。若使用者沒有調用setsockopt(),則tcp sendbuf只受net.ipv4.tcp_rmem的限制。

/sys/block/<device>/queue/nomerges

0

裝置是否關閉merge特性。取值範圍:

  • 0:開啟任意類型的merge

  • 1:關閉複雜的merge檢查,開啟簡單的one-shot merge

  • 2:關閉所有類型的merge

IO的讀寫地址連續的情況下,核心IO協議棧會將多個讀寫地址連續的IO合并為一個大IO(即merge特性),再統一發送給硬體處理,極大地提升了硬體的IO效能。

IO的讀寫地址隨機的情況下,IO之間發生合并的幾率較小。然而,檢查是否可以執行合併作業會消耗一定的CPU周期,從而影響效能。使用者可以通過關閉裝置的merge特性來提升效能。

/sys/block/<device>/queue/read_ahead_kb

4096

裝置檔案系統的read-ahead size

核心預設值為128 KB,tuned服務將值調整為4096 KB。

如果使用者下發的IO負載大部分是隨機IO,建議調低該值(比如128 KB)以提升業務效能。

/sys/block/<device>/queue/rq_affinity

1

IO完成中斷要發送給哪個CPU進行處理。取值範圍:

  • 0:IO完成中斷會在當前觸發中斷的CPU上進行處理。

  • 1:IO完成中斷髮送給提交IO request的CPU所在的groupgroup一般指的是同一個socket,同一個socket上的CPU共用cache,在該設定下IO完成中斷實際是發送給該group的第一個CPU。這樣設定的優點是cache友好,處理更快;缺點是IO頻繁時,group的第一個CPU壓力會很大。

  • 2:IO完成中斷會發送給提交IO request的CPU。這樣設定的優點是CPU的負載比較均衡;缺點是效率較上述設定低。

建議根據系統的IO壓力情況調整發送方式。

/sys/block/<device>/queue/scheduler

mq-deadline(單個隊列)或

none(多個隊列)

IO裝置調度器。

Alibaba Cloud Linux 3支援的調度器mq-deadlinekyberbfqnone

針對blk-mq裝置,如果只有一個隊列,預設使用mq-deadline;如果有多個隊列,預設使用none

通常情況下,保持預設值。如果有特殊要求,比如對讀時延性,可以切換到kyber,並配置相應的時延目標。

/sys/kernel/mm/pagecache_limit/enabled

0

是否啟用Linux核心中的頁面緩衝Page Cache限制功能。取值範圍:

  • 0:禁用全部Page Cache限制功能。

  • 1:啟用Page Cache限制功能。

重要

Alibaba Cloud Linux 3系統自研特性,不承諾長期維護。

/sys/fs/cgroup/memory/memory.pagecache_limit.enable

0

memcg是否啟用Page Cache限制功能開關。取值範圍:

  • 0:當前memcg禁用Page Cache限制功能。

  • 1:當前memcg啟用Page Cache限制功能。

/sys/fs/cgroup/memory/memory.pagecache_limit.size

0

限制當前memcgPage Cache使用量。單位:位元組。

取值範圍:0~當前memcg的memory.limit_in_bytes值(memory.limit_in_bytes值由您自訂設定)。

  • 0:即使全域開關和memcg開關都開啟,當前memcg也會禁用Page Cache限制功能

  • 非0:當前memcg treePage Cache的使用量的上限。

網路安全

配置項

預設值

說明

net.ipv4.conf.all.arp_ignore

0

當前所有網卡的控制系統在收到外部的ARP請求時,決定是否返回ARP響應。取值範圍:

  • 0:不論目標IP地址是否位於接收網卡上,都應該對本機IP地址的ARP請求做出響應,包括環回網卡上的地址。

  • 1:只對目標IP地址為本地接收網卡上的地址的ARP請求作出響應。

  • 2:只對目的IP地址為接收網卡上的本地地址的ARP請求進行響應,且ARP請求的源IP必須與接收網卡處於同一網段。

例如,當eth0接收到一個目的地址為eth1的ARP請求時,若為0,將回複ARP Reply;若為1或2,由於接收到的ARP請求中的目的IP地址與網卡不一致,則不會回複。

net.ipv4.conf.default.arp_ignore

0

建立網卡的控制系統在收到外部的ARP請求時,決定是否返回ARP響應。取值範圍:

  • 0:不論目標IP地址是否位於接收網卡上,都應該對本機IP地址的ARP請求做出響應,包括環回網卡上的地址。

  • 1:只對目標IP地址為本地接收網卡上的地址的ARP請求作出響應。

  • 2:只對目的IP地址為接收網卡上的本地地址的ARP請求進行響應,且ARP請求的源IP必須與接收網卡處於同一網段。

例如,當eth0接收到一個目的地址為eth1的ARP請求時,若為0,將回複ARP Reply;若為1或2,由於接收到的ARP請求中的目的IP地址與網卡不一致,則不會回複。

net.ipv4.ip_forward

0

控制IPv4資料包的轉寄功能。取值範圍:

  • 0:禁止IP轉寄。

  • 1:開啟IP轉寄功能。

提高資源利用

配置項

預設值

說明

net.ipv4.tcp_fin_timeout

60

主動斷開socket串連的一方,TCP串連保持在FIN-WAIT-2狀態的時間。單位:秒。

用於等待對端中斷連線或接收對方資料。修改該值以加快系統關閉處於FIN-WAIT-2狀態的TCP串連。

在實際業務情境中,可以使用netstat -ant | grep FIN_WAIT2 | wc -l命令來查看處於FIN-WAIT-2狀態的串連數量。如果串連數量較大,可以考慮降低該數值,以加快機器釋放串連的速度;反之,則建議保持預設的60秒。更多資訊,請參見為什麼Linux系統的ECS執行個體中,出現大量的處於FIN_WAIT2狀態的TCP串連?

net.ipv4.tcp_tw_reuse

2

允許使用處於TIME-WAIT狀態的socket(即TIME-WAIT狀態的連接埠)進行新的TCP串連。取值範圍:

  • 0:關。

  • 1:全域開啟。

  • 2:只對loopback開啟。

net.ipv4.tcp_keepalive_time

7200

keepalive功能開啟的情況下,發送keepalive訊息的間隔時間。單位:秒。

用於確認TCP串連是否有效。

系統限制

配置項

預設值

說明

fs.aio-max-nr

65536

Linux aio並發請求的最大值。

該值的設定取決於系統對Linux aio的使用程度,例如資料庫和搜尋情境,需要一個較大的aio-max-nr

aio-max-nraio-nr配合,aio-nr是通過累加系統調用io_setup(unsigned nr_events, aio_context_t *ctx_idp)的第一個參數得到的。當aio-nr + nr_events > aio-max-nr時,io_setup()將返回-EAGAIN錯誤。因此,通過觀察aio-nr的值合理設定業務環境的aio-max-nr

fs.file-max

根據系統初始化預留記憶體大小設定。

系統允許的檔案控制代碼的最大數量。

系統初始化時最多10%的預留記憶體可以用於檔案控制代碼,但是該參數的預設值最小不應小於NR_FILE即8192。

建議無特殊需求,使用預設值即可。

fs.nr_open

1048576

一個進程允許的最大開啟檔案控制代碼數量。

實際應用的限制取決於resource limit和RLIMIT_NOFILE。通常我們通過ulimit -n來設定nr_open的值,但無法設定超過fs.nr_open的數值。

監控

配置項

預設值

說明

net.netfilter.nf_conntrack_max

262144

nf_conntrack模組中雜湊表支援存放的最大串連數。

預設等於4 * net.netfilter.nf_conntrack_buckets

具體操作,請參見ECS執行個體中的應用偶爾出現丟包現象並且核心日誌(dmesg)存在kernel: nf_conntrack: table full, dropping packet的報錯資訊

net.netfilter.nf_conntrack_tcp_timeout_time_wait

120

nf_conntrack模組中儲存TIME_WAIT狀態的TCP連線時間。單位:秒。

net.netfilter.nf_conntrack_tcp_timeout_established

432000

已經建立的串連如果沒有活動,被iptables清除的逾時時間。單位:秒。

fs.inotify.max_queued_events

16384

inotify機制的最大待處理事件隊列長度。

inotify是核心提供的一種基礎設施,既可以監控檔案,也可以監控目錄。當目錄被監控時,inotify可以監控目錄自身和目錄中檔案的檔案系統事件。

建議無特殊需求,使用預設值即可。

fs.inotify.max_user_instances

128

使用者能建立的最大inotify執行個體數目。

該參數的主要目的是防止使用者因建立了過多的inotify執行個體而導致系統資源(如記憶體)被過度消耗。

建議無特殊需求,使用預設值即可。

fs.inotify.max_user_watches

8192

使用者能添加的最大watch數量。

watchinotify中的一種術語,用來描述使用者需要監控的一個對象。一個watch通常包含兩個組件,一個是路徑名,指向需要監控的檔案或者目錄;另一個是對路徑名指向的檔案或者目錄所要監控的事件組合,比如檔案訪問事件,用一個掩碼描述各種事件組合。

/sys/block/<device>/queue/hang_threshold

5000

檢測系統運行過程中長時間沒有返回的IO。單位:ms。

可以根據具體業務情境進行修改。具體操作,請參考檢測檔案系統和塊層的IO hang

重要

Alibaba Cloud Linux 3系統自研特性,不承諾長期維護。