因为很多MySQL的生产环境都在Linux下,我决定指出一些Linux下跑MySQL的很重要的优化点。这些是大家都知道的,也没什么新东西,但我想在这一个blog里收集整理一下Linux相关的配置优化经验。
文件系统:
ext4(or xfs) mount时使用notime选项
文件系统调度策略: 使用deadline or noop
# echo deadline > /sys/block/sda/queue/scheduler add "elevator=deadline" to grub.conf |
译者推荐: XFS , 目前来看Red hat Enterprise 7 后面XFS成为了默认的文件系统。
内存:
Swappiness and NUMA
译者注: 最好禁掉swappiness 或是在系统标识不使用他。
# echo 0 > /proc/sys/vm/swappiness add "vm.swapiness=0" to /etc/sysctl.conf |
使用numa的interleave all 模式
numactl –interleave=all 启动mysqld
如果使用Percona-server 在mysql_safe里有关于使用numa_interleave的选项。更多关于信息可以查看Percona Server对numa的支持
(并且别忘了使用innodb_flush_method=O_DIRECT)rformance/innodb_numa_s
译者注: 内存优化这块可以考虑使用jemalloc( tokudb,percona都有使用这个方式,官方版本需要自已加载)
CPU:
确认启用CPU的低功耗(powersave)选项
检查:
/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor |
确认这里显示是不是ondemand,如查是则启用了节能模式。
另外检查/proc/cpuinfo并对比cpu MHZ的数字和”model name”后面显示的数字是否一样
如果使用了ondemand请禁用他。
例如: “ondemand” 在服务器上运行:
$ps ax|grep kondmand|wc -l 65 $ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor ondemand |
另外查看CPU的标注频率是否和实际频率相符:
/proc/cpuinfo: model name : Intel(R) Xeon(R) CPU E5-4640 0 @ 2.40GHz .. cpu MHz : 1200.000 |
如果不符请禁用ondemand(需要更改bois里的配置)
译者注: 如果CPU超过24个核,建议使用MySQL5.6后面的版本。