MySQL运行环境中,当发现系统已经用到了swap,该怎么处理?

Posted 周万春

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL运行环境中,当发现系统已经用到了swap,该怎么处理?相关的知识,希望对你有一定的参考价值。

mysql运行环境中,当发现系统已经用到了swap,该怎么处理?


一般来说,发生swap的原因是系统认为内存不够了。
那么,当物理内存真的不够了,或者著名的NUMA都是引起swap的可能原因。通常的应对方法有几种:
    1、通过Bios、系统内核参数关闭NUMA,或者在mysqld启动时,利用numactl关闭NUMA的使用。
    2、调低系统使用swap的权重,设置内核参数 参数 vm.swappiness 不高s 不高于10。
    3、Linux下使用free命令查看内存使用情况,确认是否发生了内存泄露,可以去微信公众号「老叶茶馆」中发送“OOM”。
    4、修改MySQL参数innodb_flush_method = O_DIRECT,这样InnoDB在读写物理数据的时候会绕过cache来访问磁盘。
    5、优化SQL效率,避免产生额外的分组、排序、临时表情况发生,参考文章:文章:http://t.cn/EwLIuFv
    6、在【夜间或业务不繁忙】时适合执行 swapoff -a,并执行sync刷新操作系统内存脏页到硬盘。

 

以上是关于MySQL运行环境中,当发现系统已经用到了swap,该怎么处理?的主要内容,如果未能解决你的问题,请参考以下文章

linux系统之swap分区

Centos修改swappiness

Swap交换分区--continue

centos下设置swap分区的大小

Linux 中交换空间 (swap)应该分多大才好?

Linux 中交换空间 (swap)应该分多大才好?