MYSQL优化之主机层面优化

一、安装前系统环境检测

1、Selinux和系统防火墙iptables需要关闭

要把selinux设置成disable,设置完成后需重启系统

cat /etc/sysconfig/selinux

MYSQL优化之主机层面优化

 

 查看iptables当前状态与关闭过程

chkconfig  --list

chkconfig iptables off

chkconfig --list

2、I/O调度系统默认是cfq模式,这里强烈建议用deadline模式

查看I/O调度文件

MYSQL优化之主机层面优化

 

 修改I/O调度器,需要在/etc/grub.conf 中加入elevator=deadline,保证永久生效

MYSQL优化之主机层面优化

 

 3、swap分区的设置

swappiness 值的大小对如何使用swap分区有着很大的影响。

它有0和100两个极限值,0代表最大限度地使用物理内存,然后才使用swap分区,这种行为可能导致系统内存溢出,出现OOM的错误

从而导致MySQL被意外kill掉,所以需要谨慎设置。100则是积极的使用swap分区,并且把内存上面的数据及时搬到swap分区里

cat /proc/sys/vm/swappiness

MYSQL优化之主机层面优化

 

 4、文件系统的选择

建议使用xfs文件系,相比ext4,它更方便管理,支持动态扩容,删除文件也方便

5、操作系统的限制

先来查看一下当前操作系统的限制情况

MYSQL优化之主机层面优化

 

 这里有2个重要的参数,一个叫openfiles,另一个叫max user processes. 如果openfiles设置不合理

当前服务器端连接过多或者表过多时,,会出现文件句柄超限的错误“too many open files”

max user processes 参数的用途是,有时候我们可能会跑多实例,但是发现创建不了新的连接报出“

resource temporarily unavailable”的错误,表示没有足够的资源

防止以上2种报错情况,我们可以系统系统软件的现在/etc/security/limits.conf

MYSQL优化之主机层面优化

 

 

numa需要关闭

   简单来讲关闭numa功能,可以更好地分配内存,不需要采用swap 的方式来获取内存,因为有经验的系统管理

员和DBA都知道使用swap导致的数据库性能下降有多么的恶心。

 

Centos 6

在/etc/grub.conf    在kernel 添加numa=off 就行了

二、Linux OS层面禁用NUMA 1、修改 grub.conf
# vi /boot/grub/grub.conf
#/* Copyright 2010, Oracle. All rights reserved. */
 
default=0
timeout=5
hiddenmenu
foreground=000000
background=ffffff
splashimage=(hd0,0)/boot/grub/oracle.xpm.gz
 
title Trying_C0D0_as_HD0
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-128.1.16.0.1.el5 root=LABEL=DBSYS ro bootarea=dbsys rhgb quiet console=ttyS0,115200n8 console=tty1 crashkernel=128M@16M numa=off
initrd /boot/initrd-2.6.18-128.1.16.0.1.el5.img

 

关闭NUMA建议方案:

1.在BIOS设置层面关闭NUMA,缺点是需要重启OS。
2.修改GRUB配置文件,缺点也是要重启OS。
在/etc/grub.conf的kernel行最后添加numa=off

如下所示:
kernel /vmlinuz-2.6.32-220.el6.x86_64 ro root=/dev/mapper/VolGroup-root rd_NO_LUKS LANG=en_US.UTF-8 rd_LVM_LV=VolGroup/root rd_NO_MD quiet SYSFONT=latarcyrheb-sun16 rhgb crashkernel=auto rd_LVM_LV=VolGroup/swap rhgb crashkernel=auto quiet KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM  numa=off

3.升级MySQL版本到5.6.27及以后,新增了参数 innodb_numa_interleave,只需要重启mysqld实例,无需重启OS,推荐此方案。
配置 innodb_numa_interleave 参数,将其设置为ON

上一篇:Apache2开启目录浏览功能


下一篇:在centos7上搭建k8s环境