Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 優化 MySQL 運行環境三大核心調校:I/O 調度器、檔案描述符、NUMA 關閉

編輯:關於 Linux

MySQL 效能深受作業系統層面影響。本文針對三大關鍵點提供永久生效的調校方案:將 I/O 調度器從 cfq 改為 deadline/noop、擴大檔案描述符與進程數限制、關閉 NUMA 避免記憶體分配不均導致 Swap,含 grub 參數、limits.conf、mysqld_safe 腳本驗證完整步驟。

MySQL 系統層優化架構圖

一、修改 I/O 調度算法

現狀:預設 cfq (完全公平佇列) 適合桌面,不適合資料庫隨機 I/O。

動態修改 (重開機失效)

echo deadline > /sys/block/sda/queue/scheduler
# SSD/NVMe 建議 noop
echo noop > /sys/block/nvme0n1/queue/scheduler

永久生效 (修改 grub)

vi /etc/grub.conf
# kernel 行尾加入 elevator=deadline
kernel /vmlinuz-... ro root=UUID=... rd_NO_LUKS ... elevator=deadline numa=off rhgb quiet

# 重啟後驗證
cat /sys/block/sda/queue/scheduler
# [cfq] deadline noop  → deadline 被選中

二、擴大檔案描述符與進程數限制

動態修改 (當前 Shell)

ulimit -n 51200
ulimit -u 51200

永久生效

vi /etc/security/limits.conf
* hard nofile 51200
* soft nofile 51200
* hard nproc 51200
* soft nproc 51200

vi /etc/pam.d/login
session required /lib64/security/pam_limits.so

# 重啟驗證
ulimit -a

三、關閉 NUMA 特性

原因:NUMA 導致記憶體局部性分配,MySQL 單進程跨節點存取觸發 Swap,效能劇降。

方法一:grub 關閉 (重啟生效)

vi /etc/grub.conf
kernel ... numa=off ...

方法二:mysqld_safe 啟動時交織記憶體 (推薦,無需關閉 NUMA)

# 檢查 mysqld_safe 是否已包含 numactl --interleave=all
grep -A 10 'numa_interleave' /usr/bin/mysqld_safe
# 若無,手動修改啟動腳本在執行 mysqld 前加入:
cmd="numactl --interleave=all $cmd"

驗證優化效果

  • numactl --hardware 觀察節點記憶體分布
  • iostat -x 1 觀察 %util、await、svctm
  • mysqladmin ext -i 1 | grep -E 'Threads_connected|Questions|Slow_queries|Innodb_buffer_pool_reads'
Copyright © Windows教程網 All Rights Reserved