mysql os_Mysql关于OS级优化

1.2、磁盘I/O相关1、使用SSD或者PCIe SSD设备,至少获得数百倍甚至万倍的IOPS提升;2、购置阵列卡同时配备CACHE及BBU模块,可明显提升IOPS(主要是指机械盘,SSD或PCIe SSD除外。同时需要定期检查CACHE及BBU模块的健康状况,确保意外时不至于丢失数据)3、有阵列卡时,设置阵列写策略为WB(write back),甚至FORCE WB(若有双电保护,或对数据安全性要求不是特别高的话),严禁使用WT策略。并且闭阵列预读策略,基本上是鸡肋,用处不大2、系统层相关优化1、使用deadline/noop这两种I/O调度器,千万别用cfq(它不适合跑DB类服务);IO调度,默认cfqcat /sys/block/sda/queue/schedulernoop anticipatory deadline [cfq]修改调度策略echo 'deadline' > /sys/block/sda/queue/scheduler对于SSD盘建议采用最简单的noopvi /etc/rc.localecho 'deadline' > /sys/block/sda/queue/schedulerecho '16' > /sys/block/sda/queue/read_ahead_kbecho '512' > /sys/block/sda/queue/nr_requests减少预读,默认128echo '16' > /sys/block/sda/queue/read_ahead_kb增大队列,默认128echo '512' > /sys/block/sda/queue/nr_requests2、使用xfs文件系统,千万别用ext3;ext4勉强可用,但业务量很大的话,则一定要用xfs;3、文件系统mount参数中增加:noatime, nodiratime, nobarrier几个选项(nobarrier是xfs文件系统特有的格式化时的参数:mkfs.xfs -d agcount=256 -l size=128m,lazy-count=1,version=2 /dev/diska1mount时的参数defaults,noatime,nodiratime,nobarrier,discard,allocsize=256m,logbufs=8,attr2,logbsize=256kxfs没必要刻意进行优化,默认的参数就足够了2.2、其他内核参数优化针对关键内核参数设定合适的值,目的是为了减少swap的倾向,并且让内存和磁盘I/O不会出现大幅波动,导致瞬间波峰负载1、将vm.swappiness设置为5-10左右即可,甚至设置为0(RHEL 7以上则慎重设置为0,除非你允许OOM kill发生),以降低使用SWAP的机会;cat /proc/sys/vm/swappinessvi /etc/sysctl.confvm.swappiness = 0或echo '0' > /proc/sys/vm/swappiness2、将vm.dirty_background_ratio设置为5-10,将vm.dirty_ratio设置为它的两倍左右,以确保能持续将脏数据刷新到磁盘,避免瞬间I/O写,产生严重等待(和MySQL中的innodb_max_dirty_pages_pct类似)vm.dirty_background_ratio:这个参数指定了当文件系统缓存脏页数量达到系统内存百分之多少时(如5%)就会触发pdflush/flush/kdmflush等后台回写进程运行,将一定缓存的脏页异步地刷入外存;vm.dirty_ratio:而这个参数则指定了当文件系统缓存脏页数量达到系统内存百分之多少时(如10%),系统不得不开始处理缓存脏页(因为此时脏页数量已经比较多,为了避免数据丢失需要将一定脏页刷入外存);在此过程中很多应用进程可能会因为系统转而处理文件IO而阻塞。cat /proc/sys/vm/dirty_background_ratio10修改:vi /etc/rc.localecho '20' >/proc/sys/vm/dirty_background_ratio这个值是一个阀值,说明如果内存中的脏数据达到系统总内存的10%时,那么pdflush进程就会启动,将内存中的脏数据写回硬盘.这个值可适当调高.可获得更快的写入速度.cat /proc/sys/vm/dirty_ratio20echo '10'>/proc/sys/vm/dirty_ratiodirty_ratio的值是数据写进内存的阀值,20%是指当系统内存已经缓存了40%的数据以后,就不再往内存中缓存数据了.修改:vi /etc/rc.localecho '40'>/proc/sys/vm/dirty_ratiovi /etc/sysctl.confvm.dirty_ratio = 20vm.dirty_background_ratio = 10sysctl -p3、将net.ipv4.tcp_tw_recycle、net.ipv4.tcp_tw_reuse都设置为1,减少TIME_WAIT,提高TCP效率;vi /etc/sysctl.confnet.ipv4.tcp_tw_recycle=1表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。net.ipv4.tcp_tw_reuse=1表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;sysctl -p4、网传的read_ahead_kb、nr_requests这两个参数,我经过测试后,发现对读写混合为主的OLTP环境影响并不大(应该是对读敏感的场景更有效果).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值