Linux时间前调对mysql的影响_MySQL 优化之 Linux系统层面调优

MySQL 一般运行于Linux系统中。对于MySQL的调优一般分为Linux操作系统层面的调优和MySQL层面的调优(当然还有架构层面、业务层面、应用程序层面的调优)。操作系统主要是管理和分配硬件资源,所以其实系统层面的调优包括了硬件的调优,也就是调整硬件参数。Linux系统层面的调优一般分为 CPU的调优、内存的调优、磁盘的调优、网络的调优、Linux后台service调优等等。

1. CPU 调优

1.1 CPU 的节能模式

在server环境的CPU一定要关闭节能模式,节能模式不适应于服务器环境。因为他会自动给CPU降频进入休眠模式!一般笔记本电脑,手机为了续航时间,才需要。关闭CPU的节能模式有两种方法:

1)在BIOS中进行设置,彻底关闭;

2)关闭Linux中的服务 cpuspeed 和 irqbalance;

[root@localhost ~]#chkconfig --level 35 cpuspeed off

[root@localhost ~]#chkconfig | grep cpuspeed

cpuspeed 0:off 1:on 2:off 3:off 4:off 5:off 6:off

[root@localhost ~]#chkconfig --level 35 irqbalance off

[root@localhost ~]#chkconfig | grep irqbalance

irqbalance 0:off 1:off 2:off 3:off 4:off 5:off 6:off

cpuspeed 就是负责CPU节能的后台服务;而irqbalance在cpuspeed将某个或某几个CPU调节进入休眠模式时,它负责将中断发送到没有休眠的CPU。关闭irqbalance会将所有中断均衡的发送到所有cpu.

1.2 关闭CPU的numa

numa的会导致mysqld产生swap,严重影响性能。因为numa架构的CPU和内存是bind的,如果CPU自己node中的内存不够,就会导致swap的产生,即使此时其它node中有大量的空闲内存,它也不会去使用。这就是numa的一个缺陷。有多种方法关闭CPU的numa:

1)在BISO中进行配置;

2)numactl --interleave=all

[root@localhost ~]#numactl --interleave=all

interleave=all 其实是将NUMA架构的各个node中的内存,又重新虚拟成了一个共享的内存来进行分配,但是和SMP不同的是,因为每两个node之间有 inter-connect ,所以又避免了SMP架构总线争用的缺陷。

查看CPU是否被休眠导致降频:

[root@localhost ~]#cat /proc/cpuinfo

processor : 0vendor_id:GenuineIntel

cpu family: 6model: 23model name: Intel(R) Xeon(R) CPU E5405 @ 2.00GHz

stepping: 10cpu MHz: 1995.288

看上面的 cpu MHz : 1995.288 和 实际是否一致。

具体参见:http://www.cnblogs.com/digdeep/p/4847484.html

2. 内存的调优

内存主要是要防止发生 swap。因为发生swap的话,从内存访问直接下降为硬盘访问,随机访问的速度下降10的6次方倍,也就是10万倍。顺序访问下降10倍左右。

2.1 防止发生swap:

1)关闭CPU的numa,防止numa导致的swap;

2)设置 vm.swappiness=1;在 /etc/sysctl.conf 中添加:vm.swappiness=1,然后 sysctl -p; 也可以 sysctl vm.swappiness=1临时修改,然后sysctl -p

注意:在RHEL/CentOS 6.4及更新的内核中 vm.swappiness = 0 的默认行为被修改了,如果继续设置vm.swappiness = 0,

有可能导致系统内存溢出,从而导致MySQL被意外kill掉。所以这里我们设置为 1 而不是传统的 0.

3)设置 /proc/$(pidof -s mysqld)/oom_adj为较小的值(-15,-16或者-17)来尽量避免MySQL由于内存不足而被关闭

[root@localhost ~]#echo -17 > /proc/$(pidof mysqld)/oom_adj

[root@localhost ~]#cat /proc/$(pidof mysqld)/oom_adj

-17

这个oom_adj中的变量的范围为15到-16之间。越大越容易在内存不足时被kill。-17 则表示该进程不会

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值