一.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将数据传给磁盘


持续更新。。。。。