自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

面試官問你:我想優(yōu)化 Linux 內核參數(shù),你有哪些建議呢?

系統(tǒng) Linux
控制內核在物理內存使用滿時,交換(swap)到磁盤的頻率。數(shù)值越高,越傾向于交換數(shù)據(jù),數(shù)值越低,內存壓力更大時才會進行交換。

引言

關于內核這方面確實很想分享下,因為工作中還有面試中這都算是一個大頭了,把下面的掌握了,面試基本沒什么大問題了。

開始

1. 內存管理優(yōu)化

vm.swappiness

? 作用: 控制內核在物理內存使用滿時,交換(swap)到磁盤的頻率。數(shù)值越高,越傾向于交換數(shù)據(jù),數(shù)值越低,內存壓力更大時才會進行交換。

? 推薦值: 通常設置為 10-60(默認 60),對于內存密集型應用(如數(shù)據(jù)庫)建議將此值設低。

? 命令: sysctl -w vm.swappiness=10

vm.dirty_background_ratio 和 vm.dirty_ratio

? 作用: 控制臟頁(dirty pages,已修改但未寫回磁盤的數(shù)據(jù))的最大比例。vm.dirty_background_ratio 定義了系統(tǒng)開始將臟頁刷寫到磁盤的觸發(fā)閾值,而 vm.dirty_ratio 則是寫操作的上限。

? 推薦值: vm.dirty_background_ratio = 10,vm.dirty_ratio = 20-40

? 命令:

sysctl -w vm.dirty_background_ratio=10
sysctl -w vm.dirty_ratio=20

vm.min_free_kbytes

? 作用: 指定內核保留的一定量的內存,用于防止系統(tǒng)內存完全耗盡,避免系統(tǒng)進入 OOM(Out of Memory)狀態(tài)。

? 推薦值: 通常設置為系統(tǒng)總內存的 1%-2%,也可以根據(jù)系統(tǒng)實際情況調整。

? 命令: sysctl -w vm.min_free_kbytes=65536

vm.overcommit_memory

? 作用: 控制內存分配的策略。該參數(shù)有三個值:

? 推薦值: vm.overcommit_memory = 2 適用于大部分生產(chǎn)環(huán)境,特別是在運行數(shù)據(jù)庫等內存密集型應用時。

? 命令: sysctl -w vm.overcommit_memory=2

2. 進程調度優(yōu)化

kernel.sched_latency_ns

? 作用: 控制調度器延遲(任務調度時的最大延遲)。該參數(shù)決定了調度器在處理實時任務時的延遲。

? 推薦值: 適用于需要低延遲的場景,默認值通常已足夠。

? 命令: sysctl -w kernel.sched_latency_ns=5000000(5ms)

kernel.sched_min_granularity_ns

? 作用: 控制 CPU 時間片的最小粒度。該參數(shù)決定了調度器給每個任務分配的最小時間。

? 推薦值: sysctl -w kernel.sched_min_granularity_ns=20000000(20ms)

kernel.sched_wakeup_granularity_ns

? 作用: 定義一個進程被喚醒時,它被重新調度的時間間隔。適用于減少高負載系統(tǒng)中的上下文切換。

? 推薦值: sysctl -w kernel.sched_wakeup_granularity_ns=15000000(15ms)

kernel.sched_tunable_scaling

? 作用: 啟用動態(tài)調整調度器參數(shù)的功能,用于自動根據(jù)系統(tǒng)負載優(yōu)化調度器行為。

? 推薦值: sysctl -w kernel.sched_tunable_scaling=1

3. 文件系統(tǒng)優(yōu)化

vm.vfs_cache_pressure

? 作用: 控制內核回收用于緩存的內存。當該值較大時,內核會傾向于回收更多的緩存,較小的值則保留更多的緩存。

? 推薦值: 通常設置為 50(默認 100),在文件系統(tǒng)緩存非常重要的情況下,可以降低該值。

? 命令: sysctl -w vm.vfs_cache_pressure=50

fs.file-max

? 作用: 定義系統(tǒng)允許的最大文件描述符數(shù)量。對于大并發(fā)應用或數(shù)據(jù)庫應用,可能需要增加此值。

? 推薦值: 可以根據(jù)應用需求進行調整,默認通常為 1,000,000。

? 命令: sysctl -w fs.file-max=2097152

4. 網(wǎng)絡性能優(yōu)化

net.core.somaxconn

? 作用: 控制系統(tǒng)允許的最大連接請求隊列長度。該值決定了在 TCP 連接請求被處理之前,最大允許的掛起請求數(shù)量。

? 推薦值: sysctl -w net.core.somaxconn=1024

net.ipv4.tcp_rmem 和 net.ipv4.tcp_wmem

? 作用: 分別控制 TCP 接收和發(fā)送緩沖區(qū)的最小、默認和最大大小。這對于高帶寬網(wǎng)絡應用至關重要。

? 推薦值: sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216"

? 命令: sysctl -w net.ipv4.tcp_wmem="4096 87380 16777216"

net.core.netdev_max_backlog

? 作用: 設置網(wǎng)絡接口的最大接收隊列。如果網(wǎng)絡流量很大,設置較大的值可以避免丟包。

? 推薦值: sysctl -w net.core.netdev_max_backlog=5000

net.ipv4.tcp_fin_timeout

? 作用: 控制 TCP 連接在關閉時的等待時間。減小此值可以加速連接的關閉,減少過多的 TCP 連接狀態(tài)。

? 推薦值: sysctl -w net.ipv4.tcp_fin_timeout=30

net.ipv4.tcp_tw_reuse

? 作用: 允許重用 TIME_WAIT 狀態(tài)的 TCP 連接,減少對系統(tǒng)資源的消耗,尤其是在高并發(fā)場景下。

? 推薦值: sysctl -w net.ipv4.tcp_tw_reuse=1

net.ipv4.tcp_max_syn_backlog

? 作用: 控制內核在 TCP 連接建立時,最大等待處理的 SYN 包隊列長度。如果應用程序需要處理大量的 TCP 連接,增大該值可以提升 TCP 性能。

? 推薦值: sysctl -w net.ipv4.tcp_max_syn_backlog=4096

? 命令:

sysctl -w net.ipv4.tcp_max_syn_backlog=4096

5. 系統(tǒng)性能優(yōu)化

kernel.shmmax 和 kernel.shmall

? 作用: 分別控制系統(tǒng)允許的最大共享內存段大小和系統(tǒng)總的共享內存頁數(shù)。在處理數(shù)據(jù)庫和大規(guī)模數(shù)據(jù)處理時,這兩個參數(shù)的調優(yōu)尤為重要。

? 推薦值: 根據(jù)內存大小和應用需求設置,通常設置為物理內存的 50%-75%。

? 命令:

sysctl -w kernel.shmmax=2147483648
sysctl -w kernel.shmall=2097152

fs.inotify.max_user_watches

? 作用: 控制系統(tǒng)中可用的最大 inotify 監(jiān)聽器數(shù)目。增加該值可以幫助增強監(jiān)控能力,尤其在大量文件監(jiān)控的場景下。

? 推薦值: sysctl -w fs.inotify.max_user_watches=524288

6. I/O 性能優(yōu)化

vm.dirty_background_bytes 和 vm.dirty_bytes

? 作用: 控制在將數(shù)據(jù)寫入磁盤之前,內核將保持多大的臟數(shù)據(jù)。vm.dirty_background_bytes 控制后臺刷寫臟數(shù)據(jù)的閾值,vm.dirty_bytes 控制刷寫的最大數(shù)據(jù)量。調整這兩個參數(shù)可以優(yōu)化磁盤的寫入性能。

? 推薦值: 將 vm.dirty_bytes 設置為更高的值,避免頻繁刷寫;而將 vm.dirty_background_bytes 設置為較小的值,確保系統(tǒng)能夠及時將臟數(shù)據(jù)刷回磁盤。

? 命令:

sysctl -w vm.dirty_background_bytes=134217728  # 128MB
sysctl -w vm.dirty_bytes=268435456  # 256MB

block.mq-deadline(I/O 調度器)

? 作用: 在進行磁盤 I/O 操作時,調整調度器策略,mq-deadline 調度器適用于需要低延遲和高吞吐量的應用程序,特別是數(shù)據(jù)庫和文件服務器。

? 推薦值: 將調度器設置為 mq-deadline 可以提升磁盤的讀寫性能。

? 命令:

echo mq-deadline > /sys/block/sda/queue/scheduler

fs.aio-max-nr

? 作用: 控制系統(tǒng)允許的最大異步 I/O 請求數(shù)。在高并發(fā)的場景下,增加該參數(shù)的值有助于提升 I/O 請求的吞吐能力。

? 推薦值: sysctl -w fs.aio-max-nr=1048576 以支持更多并發(fā)的 I/O 操作。

? 命令:

sysctl -w fs.aio-max-nr=1048576

7. CPU 性能優(yōu)化

kernel.sched_min_granularity_ns

? 作用: 調整調度器為每個任務分配的最小時間片。較大的值可以減少上下文切換,提高吞吐量;較小的值則增加系統(tǒng)響應性。

? 推薦值: sysctl -w kernel.sched_min_granularity_ns=20000000 (20ms)

? 命令:

sysctl -w kernel.sched_min_granularity_ns=20000000

kernel.sched_wakeup_granularity_ns

? 作用: 定義進程被喚醒時,它被重新調度的時間間隔。適用于減少高負載系統(tǒng)中的上下文切換。

? 推薦值: sysctl -w kernel.sched_wakeup_granularity_ns=15000000 (15ms)

? 命令:

sysctl -w kernel.sched_wakeup_granularity_ns=15000000

cpu.cpuacct.usage

? 作用: 控制 CPU 使用時間的跟蹤。增加該值可以用于高負載的多核系統(tǒng)中進行細粒度監(jiān)控,幫助更精確地了解每個 CPU 核心的資源使用情況。

? 推薦值: 該參數(shù)一般用于監(jiān)控,不是直接的優(yōu)化參數(shù),但對于負載均衡和監(jiān)控系統(tǒng)非常有用。

8. 文件系統(tǒng)優(yōu)化

fs.file-max

? 作用: 控制系統(tǒng)中允許的最大文件句柄數(shù)量。對于高并發(fā)的系統(tǒng),尤其是 Web 服務器和數(shù)據(jù)庫服務器,需要增加文件句柄數(shù)量。

? 推薦值: sysctl -w fs.file-max=2097152

? 命令:

sysctl -w fs.file-max=2097152

fs.inotify.max_user_watches

? 作用: 控制用戶可監(jiān)控的最大文件數(shù)。對于需要大量文件監(jiān)控的場景(如容器管理、日志管理等),增加該值可以提高性能。

? 推薦值: sysctl -w fs.inotify.max_user_watches=524288

? 命令:

sysctl -w fs.inotify.max_user_watches=524288

9. 安全優(yōu)化

kernel.randomize_va_space

? 作用: 啟用地址空間布局隨機化(ASLR),增加系統(tǒng)的安全性,防止攻擊者猜測內存布局。

? 推薦值: sysctl -w kernel.randomize_va_space=2

? 命令:

sysctl -w kernel.randomize_va_space=2

fs.suid_dumpable

? 作用: 控制是否允許執(zhí)行 setuid 程序時轉儲 core 文件。為了提高安全性,建議將其設置為 0(不允許轉儲)。

? 推薦值: sysctl -w fs.suid_dumpable=0

? 命令:

sysctl -w fs.suid_dumpable=0

10. 內核參數(shù)和系統(tǒng)資源

kernel.shmmax 和 kernel.shmall

? 作用: 控制共享內存的最大值。適用于需要大量共享內存的應用,如數(shù)據(jù)庫。

? 推薦值: 設置為物理內存的 50%-75%,確保足夠的共享內存資源。

? 命令:

sysctl -w kernel.shmmax=2147483648  # 2GB
sysctl -w kernel.shmall=2097152    # 對應 2GB

kernel.msgmni

? 作用: 控制內核消息隊列的最大數(shù)量。對于消息密集型應用,如 IPC 或消息隊列系統(tǒng),可以調整此值。

? 推薦值: sysctl -w kernel.msgmni=1024

? 命令:

sysctl -w kernel.msgmni=1024

11. 高階 Linux 內核優(yōu)化參數(shù)

kernel.sched_child_runs_first

? 作用: 控制任務的子進程是否優(yōu)先調度。當該參數(shù)設置為 1 時,子進程會比父進程優(yōu)先調度,主要用于需要高并發(fā)子任務處理的應用場景。

? 推薦值: 對于計算密集型任務,通常保持默認值 0,但在多核環(huán)境下,可能會使用該值提高子進程的調度優(yōu)先級。

? 命令:

sysctl -w kernel.sched_child_runs_first=1

kernel.sched_idle

? 作用: 控制 Linux 調度器是否允許低優(yōu)先級任務在空閑時運行。啟用此參數(shù)時,系統(tǒng)會給空閑任務分配 CPU 時間,適用于不需要及時響應的后臺作業(yè)。

? 推薦值: 一般在空閑時間任務較多的環(huán)境中使用。默認 0 不啟用,只有在有空閑計算需求時啟用。

? 命令:

sysctl -w kernel.sched_idle=1

vm.page-cluster

? 作用: 控制內核一次回收多少個頁面進行交換。增大該值可以減少交換的次數(shù),從而提升內存效率,適用于內存密集型的應用。

? 推薦值: 默認值通常為 3,增大該值可以提高高負載環(huán)境下的性能,尤其是數(shù)據(jù)庫和大數(shù)據(jù)處理。

? 命令:

sysctl -w vm.page-cluster=5

net.core.optmem_max

? 作用: 控制網(wǎng)絡套接字接收緩沖區(qū)的最大內存使用量。這個參數(shù)可以用來控制接收緩存的大小,對于高流量的網(wǎng)絡應用非常重要。

? 推薦值: 對于高負載的 Web 服務或數(shù)據(jù)庫服務器,可以增大此值。

? 命令:

sysctl -w net.core.optmem_max=25165824  # 24MB

kernel.sysrq

? 作用: 控制 sysrq 按鍵的功能,用于調試和管理系統(tǒng)。通過啟用該功能,管理員可以在系統(tǒng)出現(xiàn)問題時執(zhí)行緊急任務,例如重啟或查看內存。

? 推薦值: 在需要遠程恢復和緊急處理的場景下可以啟用該功能。一般情況下可以禁用或限制。

? 命令:

sysctl -w kernel.sysrq=1  # 啟用 sysrq 功能

net.ipv4.tcp_max_tw_buckets

? 作用: 控制 TCP 協(xié)議棧中 TIME-WAIT 狀態(tài)的最大桶數(shù)。當連接被關閉后,TCP 會進入 TIME-WAIT 狀態(tài),增加該值有助于高并發(fā)系統(tǒng)處理更多的連接。

? 推薦值: 對于需要處理大量 TCP 連接的環(huán)境,增大此值可以減少連接過多導致的性能瓶頸。

? 命令:

sysctl -w net.ipv4.tcp_max_tw_buckets=1000000

net.ipv4.tcp_fin_timeout

? 作用: 控制 TCP 連接處于 FIN-WAIT-2 狀態(tài)的最大時間。該參數(shù)對短時間內頻繁建立和關閉連接的應用程序(如高并發(fā)的 Web 服務器)非常重要。

? 推薦值: 減小該值可以更快地關閉連接并釋放資源。

? 命令:

sysctl -w net.ipv4.tcp_fin_timeout=15  # 縮短連接關閉等待時間

net.ipv4.tcp_retries2

? 作用: 控制 TCP 連接在重試失敗后最大重試次數(shù)。適用于需要降低 TCP 連接恢復延遲的場景,尤其是在高丟包率的網(wǎng)絡環(huán)境下。

? 推薦值: 通常設置為 8-15,但對于對時延要求較低的應用,可以適當降低此值。

? 命令:

sysctl -w net.ipv4.tcp_retries2=8

fs.file-max

? 作用: 控制 Linux 系統(tǒng)中所有進程可以打開的最大文件描述符數(shù)。對于數(shù)據(jù)庫、Web 服務器或其他高并發(fā)服務,增加此值可以避免文件描述符耗盡。

? 推薦值: 根據(jù)應用的并發(fā)連接數(shù)調整,一般為 1,000,000 或更高。

? 命令:

sysctl -w fs.file-max=1000000

vm.dirty_expire_centisecs

? 作用: 控制內核將臟頁刷回磁盤的時間。較低的值可以使得系統(tǒng)在低內存時更早地寫回磁盤,防止內存過度使用,適用于大規(guī)模并發(fā)系統(tǒng)。

? 推薦值: 默認為 3000,適用于需要平衡內存和磁盤 I/O 的系統(tǒng)。

? 命令:

sysctl -w vm.dirty_expire_centisecs=2000  # 提前回寫臟頁

kernel.panic_on_oops

? 作用: 控制內核在遇到嚴重錯誤(如 Oops 錯誤)時是否自動重啟。啟用該功能可以在系統(tǒng)出現(xiàn)嚴重故障時自動恢復,避免人工干預。

? 推薦值: 對于生產(chǎn)環(huán)境中的關鍵系統(tǒng),啟用自動重啟功能有助于系統(tǒng)自動恢復。

? 命令:

sysctl -w kernel.panic_on_oops=1  # 啟用自動重啟

net.ipv6.bindv6only

? 作用: 控制 IPv6 套接字是否只綁定到 IPv6 地址。適用于需要區(qū)分 IPv4 和 IPv6 流量的應用程序。

? 推薦值: 根據(jù)具體的網(wǎng)絡需求設置此值,IPv4 和 IPv6 共存時可能需要禁用該選項。

? 命令:

sysctl -w net.ipv6.bindv6only=1  # 啟用 IPv6 僅綁定
責任編輯:武曉燕 來源: 云原生運維圈
相關推薦

2025-03-26 01:25:00

MySQL優(yōu)化事務

2024-03-07 17:21:12

HotSpotJVMHot Code

2022-02-11 19:06:29

MySQL索引面試官

2024-09-03 07:58:46

2024-09-03 09:20:45

2023-02-20 08:08:48

限流算法計數(shù)器算法令牌桶算法

2021-08-02 08:34:20

React性能優(yōu)化

2024-07-26 08:10:10

2020-06-22 11:50:38

TCPIP協(xié)議

2020-06-17 21:22:56

Serverless面試官架構

2025-04-09 00:00:55

2020-04-09 13:38:40

MySQL數(shù)據(jù)庫臟讀

2024-02-26 14:07:18

2021-05-10 08:01:12

BeanFactoryFactoryBean容器

2024-04-19 00:00:00

計數(shù)器算法限流算法

2024-03-12 14:36:44

微服務HTTPRPC

2025-04-01 00:00:00

項目CRUD單例模式

2020-11-03 07:00:15

性能優(yōu)化程序員

2015-08-13 10:29:12

面試面試官

2020-02-25 16:56:02

面試官有話想說
點贊
收藏

51CTO技術棧公眾號