首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Linux 系統下 MySQL 運行環境優化指南:I/O 調度、文件描述符、NUMA、Swappiness 與文件系統掛載參數

     編輯:MySQL 綜合教學

Linux 系統下 MySQL 運行環境優化完整指南

為發揮 MySQL 在 Linux 上的最大性能,需從作業系統層面進行多維度調優。本文涵蓋 I/O 調度演算法、文件描述符限制、NUMA 架構、Swappiness 參數與文件系統掛載選項五大核心優化項目。

一、修改 I/O 調度演算法

預設 CFQ 演算法適合桌面環境,資料庫建議改為 deadline(機械硬碟)或 noop(SSD/PCIe-SSD)。

臨時生效(重啟失效)

echo "deadline" > /sys/block/sda/queue/scheduler

注意:sda 請替換為實際資料盤裝置名。

永久生效

編輯 /etc/grub.conf,在 kernel 參數行加入 elevator=deadline,重啟後生效。驗證:cat /sys/block/sda/queue/scheduler。

二、擴大文件描述符與進程數限制

高併發場景下預設 1024 遠遠不足,建議調整至 51200 或更高。

臨時生效

ulimit -n 51200

永久生效

編輯 /etc/security/limits.conf:

* hard nofile 51200
* hard nproc 51200

並確保 /etc/pam.d/login 包含 session required /lib64/security/pam_limits.so。重啟後用 ulimit -a 驗證。

三、禁用 NUMA 特性

NUMA 架構下 MySQL 易發生記憶體分配不均導致 Swap,建議關閉。

方法 1:內核參數關閉

在 /etc/grub.conf kernel 行加入 numa=off,重啟生效。

方法 2:啟動腳本配置 Interleave

新版 mysqld_safe 內建支援,啟用 --numa-interleave 參數即可,無需額外修改。

四、調整 Swappiness 參數

控制核心積極交換記憶體頁面到 Swap 的傾向(0-100,預設 60)。

  • CentOS 7 以前建議設 0(盡量不 Swap)。
  • 新版核心設 0 易觸發 OOM Killer 殺掉 mysqld,建議設為 1。

永久生效:編輯 /etc/sysctl.conf 加入 vm.swappiness = 1,執行 sysctl -p 立即生效。

五、優化文件系統掛載參數

文件系統選擇:XFS ≈ ext4 > ext3。掛載選項建議:

defaults,noatime,nodiratime,barrier=0  (XFS 用 nobarrier)

編輯 /etc/fstab 修改對應分區掛載參數,重啟生效。noatime/nodiratime 關閉存取時間更新;barrier=0 關閉寫入屏障(需 BBU 電池備份保證電源安全)。驗證:cat /proc/mounts。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved