針對生產環境 MySQL 在 Linux 上的性能瓶頸,從 I/O 調度、文件描述符、NUMA、Swappiness、文件系統掛載五個維度給出具體配置步驟與驗證方法。
預設 CFQ → 改為 deadline(HDD)或 noop(SSD)。
echo deadline > /sys/block/sda/queue/scheduler/etc/grub.conf kernel 行加 elevator=deadline高併發必改,建議 51200+。
ulimit -n 51200/etc/security/limits.conf 加 * hard nofile 51200、* hard nproc 51200,並啟用 pam_limits.so避免記憶體分配不均導致 Swap。
grub.conf 加 numa=off--numa-interleave(新版 mysqld_safe 內建)CentOS 7+ 設 0 易 OOM,推薦 1。
/etc/sysctl.conf 加 vm.swappiness = 1sysctl -p 立即生效推薦 XFS/ext4,掛載參數:
defaults,noatime,nodiratime,barrier=0 (XFS 用 nobarrier)
修改 /etc/fstab,重啟生效。cat /proc/mounts 驗證。
cat /sys/block/sda/queue/scheduler 確認調度器ulimit -a 確認文件描述符numactl --hardware 確認 NUMA 狀態sysctl vm.swappiness 確認 Swappinesscat /proc/mounts 確認掛載參數