一.NUMA设置
单机单实例,建议关闭NUMA,关闭的方法有三种:
1.硬件层,在BIOS中设置关闭;
2.OS内核,启动时设置numa=off;
3.可以用numactl命令将内存分配策略修改为interleave(交叉)
numactl --interleave=all
二:内存的调优
1.减少预读,默认128
echo '16' > /sys/block/sda/queue/read_ahead_kb
2.增大队列,默认128
echo '512' > /sys/block/sda/queue/nr_requests
3.尽量不使用交换区,默认60
echo '1' > /proc/sys/vm/swappiness
vi /etc/rc.local
echo '16' > /sys/block/sda/queue/read_ahead_kb
echo '512' > /sys/block/sda/queue/nr_requests
vi /etc/sysctl.conf
vm.swappiness=1
4.设置 /proc/$(pidof -s mysqld)/oom_adj为较小的值(-15,-16或者-17)来尽量避免MySQL由于内存不足而被关闭,默认是0
5.关闭hugepage
echo "never">/sys/kernel/mm/transparent_hugepage/enabled
echo "never">/sys/kernel/mm/transparent_hugepage/defrag
三:调节 disk cache 刷新到磁盘的行为
vi /etc/sysctl.conf
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10
四:IO调度算法
Linux有四种IO调度算法:CFQ,Deadline,Anticipatory和NOOP,CFQ是默认的IO调度算法。完全随机的访问环境下,CFQ与Deadline,NOOP性能差异很小,但是一旦有大的连续IO,CFQ可能会造成小IO的响应延时增加,所以数据库环境建议修改为deadline算法,表现更稳定。
IO调度算法都是基于磁盘设计,所以减少磁头移动是最重要的考虑因素之一,但是使用Flash存储设备之后,不再需要考虑磁头移动的问题,可以使用NOOP算法。NOOP的含义就是NonOperation,意味着不会做任何的IO优化,完全按照请求来FIFO的方式来处理IO
echo 'deadline' > /sys/block/sda/queue/scheduler
五:设置raid卡为Write Back模式
Write Through和Write Back是阵列卡Cache的两种使用方式,也称为透写和回写。当选用write through方式时,系统的写磁盘操作并不利用阵列卡的Cache,而是直接与磁盘进行数据的交互。而write Back方式则利用阵列Cache作为系统与磁盘间的二传手,系统先将数据交给Cache,然后再由Cache将数据传给磁盘
持续更新。。。。。