成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

面試官問你:我想優化 Linux 內核參數,你有哪些建議呢?

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

引言

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

開始

1. 內存管理優化

vm.swappiness

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

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

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

vm.dirty_background_ratio 和 vm.dirty_ratio

? 作用: 控制臟頁(dirty pages,已修改但未寫回磁盤的數據)的最大比例。vm.dirty_background_ratio 定義了系統開始將臟頁刷寫到磁盤的觸發閾值,而 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

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

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

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

vm.overcommit_memory

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

? 推薦值: vm.overcommit_memory = 2 適用于大部分生產環境,特別是在運行數據庫等內存密集型應用時。

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

2. 進程調度優化

kernel.sched_latency_ns

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

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

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

kernel.sched_min_granularity_ns

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

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

kernel.sched_wakeup_granularity_ns

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

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

kernel.sched_tunable_scaling

? 作用: 啟用動態調整調度器參數的功能,用于自動根據系統負載優化調度器行為。

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

3. 文件系統優化

vm.vfs_cache_pressure

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

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

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

fs.file-max

? 作用: 定義系統允許的最大文件描述符數量。對于大并發應用或數據庫應用,可能需要增加此值。

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

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

4. 網絡性能優化

net.core.somaxconn

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

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

net.ipv4.tcp_rmem 和 net.ipv4.tcp_wmem

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

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

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

net.core.netdev_max_backlog

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

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

net.ipv4.tcp_fin_timeout

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

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

net.ipv4.tcp_tw_reuse

? 作用: 允許重用 TIME_WAIT 狀態的 TCP 連接,減少對系統資源的消耗,尤其是在高并發場景下。

? 推薦值: 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. 系統性能優化

kernel.shmmax 和 kernel.shmall

? 作用: 分別控制系統允許的最大共享內存段大小和系統總的共享內存頁數。在處理數據庫和大規模數據處理時,這兩個參數的調優尤為重要。

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

? 命令:

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

fs.inotify.max_user_watches

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

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

6. I/O 性能優化

vm.dirty_background_bytes 和 vm.dirty_bytes

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

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

? 命令:

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

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

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

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

? 命令:

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

fs.aio-max-nr

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

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

? 命令:

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

7. CPU 性能優化

kernel.sched_min_granularity_ns

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

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

? 命令:

sysctl -w kernel.sched_min_granularity_ns=20000000

kernel.sched_wakeup_granularity_ns

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

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

? 命令:

sysctl -w kernel.sched_wakeup_granularity_ns=15000000

cpu.cpuacct.usage

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

? 推薦值: 該參數一般用于監控,不是直接的優化參數,但對于負載均衡和監控系統非常有用。

8. 文件系統優化

fs.file-max

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

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

? 命令:

sysctl -w fs.file-max=2097152

fs.inotify.max_user_watches

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

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

? 命令:

sysctl -w fs.inotify.max_user_watches=524288

9. 安全優化

kernel.randomize_va_space

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

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

? 命令:

sysctl -w kernel.randomize_va_space=2

fs.suid_dumpable

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

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

? 命令:

sysctl -w fs.suid_dumpable=0

10. 內核參數和系統資源

kernel.shmmax 和 kernel.shmall

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

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

? 命令:

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

kernel.msgmni

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

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

? 命令:

sysctl -w kernel.msgmni=1024

11. 高階 Linux 內核優化參數

kernel.sched_child_runs_first

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

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

? 命令:

sysctl -w kernel.sched_child_runs_first=1

kernel.sched_idle

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

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

? 命令:

sysctl -w kernel.sched_idle=1

vm.page-cluster

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

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

? 命令:

sysctl -w vm.page-cluster=5

net.core.optmem_max

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

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

? 命令:

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

kernel.sysrq

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

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

? 命令:

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

net.ipv4.tcp_max_tw_buckets

? 作用: 控制 TCP 協議棧中 TIME-WAIT 狀態的最大桶數。當連接被關閉后,TCP 會進入 TIME-WAIT 狀態,增加該值有助于高并發系統處理更多的連接。

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

? 命令:

sysctl -w net.ipv4.tcp_max_tw_buckets=1000000

net.ipv4.tcp_fin_timeout

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

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

? 命令:

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

net.ipv4.tcp_retries2

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

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

? 命令:

sysctl -w net.ipv4.tcp_retries2=8

fs.file-max

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

? 推薦值: 根據應用的并發連接數調整,一般為 1,000,000 或更高。

? 命令:

sysctl -w fs.file-max=1000000

vm.dirty_expire_centisecs

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

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

? 命令:

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

kernel.panic_on_oops

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

? 推薦值: 對于生產環境中的關鍵系統,啟用自動重啟功能有助于系統自動恢復。

? 命令:

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

net.ipv6.bindv6only

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

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

? 命令:

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

2024-03-07 17:21:12

HotSpotJVMHot Code

2025-03-26 01:25:00

MySQL優化事務

2025-06-04 07:48:46

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

限流算法計數器算法令牌桶算法

2021-08-02 08:34:20

React性能優化

2024-07-26 08:10:10

2020-06-22 11:50:38

TCPIP協議

2020-06-17 21:22:56

Serverless面試官架構

2020-04-09 13:38:40

MySQL數據庫臟讀

2025-04-09 00:00:55

2024-04-19 00:00:00

計數器算法限流算法

2024-03-12 14:36:44

微服務HTTPRPC

2024-02-26 14:07:18

2021-05-10 08:01:12

BeanFactoryFactoryBean容器

2025-04-01 00:00:00

項目CRUD單例模式

2015-08-13 10:29:12

面試面試官

2020-11-03 07:00:15

性能優化程序員
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品国产精品国产专区不片 | 久草免费在线视频 | 日韩午夜网站 | 三级黄色网址 | 久久美女网 | 欧美激情a∨在线视频播放 成人免费共享视频 | 国产精品永久久久久久久www | 成人福利在线视频 | 精品国产欧美一区二区 | 国产999在线观看 | av无遮挡| 国产精品欧美一区二区三区 | 久久久久一区 | 在线播放中文字幕 | 中文字幕三区 | 午夜亚洲| 精品国产青草久久久久96 | 亚洲国产欧美一区二区三区久久 | 亚洲伊人久久综合 | 国产免费拔擦拔擦8x高清 | 草草草草视频 | 中文字幕在线观看www | 成人免费激情视频 | 亚洲高清视频在线观看 | 久久久久久国产精品免费免费狐狸 | 特一级毛片| 亚洲a一区 | 中文字幕一级毛片视频 | 亚洲高清视频一区二区 | 特一级毛片| 久久av一区二区三区 | 免费国产一区二区 | 欧美.com | 中文天堂在线一区 | 亚洲精选一区二区 | 国产精品国产成人国产三级 | 日韩中文字幕在线视频 | 黄色av网站在线观看 | 国产视频精品视频 | 激情欧美日韩一区二区 | 亚洲乱码国产乱码精品精98午夜 |