当前位置:首页 > 数据库 > 正文内容

Mysql占用swap空间,导致mysql性能大幅降低

root3年前 (2022-01-12)数据库1233

在Linux下,SWAP的作用类似Windows系统下的“虚拟内存”。当物理内存不足时,拿出部分硬盘空间当SWAP分区(虚拟成内存)使用,从而解决内存容量不足的情况。
SWAP意思是交换,顾名思义,当某进程向OS请求内存发现不足时,OS会把内存中暂时不用的数据交换出去,放在SWAP分区中,这个过程称为SWAP OUT。当某进程又需要这些数据且OS发现还有空闲物理内存时,又会把SWAP分区中的数据交换回物理内存中,这个过程称为SWAP IN

发生SWAP的最直接可能的原因是进程向OS申请内存时,发现物理内存不足,当没有SWAP可用的话,这时可能会一直等待,也可能会触发OOM-killer机制,OS把消耗内存最多的那个进程kill掉以释放内存,这个选择取决于内核参数 vm.swappiness。该参数可选范围从 0 - 100,设为 0 就是希望最大限度使用物理内存,尽量不使用swap,设为 100 则是希望积极使用swap我们通常强烈建议这个值小于等于10(查看vm.swappiness = 10),最好是设置为 0。原因很简单,对数据库这种需要集中CPU资源、大内存、高I/O的程序而言,如果用SWAP分区代替内存,那数据库服务性能将是不可接受的,还不如直接被OOM kill(数据库进程通常占用最多内存,最容易被OOM kill)来的痛快(早死晚死都是死,还不如痛快的死,反正很快就能重生,嗯)。


现在问题:

    导入数据发现mysql性能急剧下降

    cpu、memory、disk均是正常

   通过htop 命令发现swap有使用

正常情况下有内存的时候是不使用swap,肯定是某个时间点内存不够用使用了swap


直接关闭swap空间

发现mysql的速度飞快提升



参考文档


扫描二维码推送至手机访问。

版权声明:本文由一叶知秋发布,如需转载请注明出处。

本文链接:https://zhiqiu.top/?id=203

分享给朋友:

相关文章

ES 修改 查询最大行数

curl  -XPUT  http://ip:port/your_index/_settings?preserve_existing=true  -H  'Content-Type: &nbs...

如何解决 MySQL max_allowed_packet 错误

如何解决 MySQL max_allowed_packet 错误

修改global变量并退出session,重新登录,可行。修改数据库配置,未测试。方法/步骤先看看与这个错误相关的后台异常 :  Packet for query is too&n...

curl 访问es 常用的命令

查询有哪些索引curl -X GET 'http://10.0.0.143:8200/_cat/indices'查询索引的别名curl  -XGET 'http://127.0.0.1:8200/index...

清除mysql 查询缓存

对一条sql进行优化时,发现原本很慢的一条sql(将近1分钟) 在第二次运行时, 瞬间就完成了(0.00sec) 这是因为mysql对同一条sql进行了缓存,服务器直接从上次的查询结果缓存中读取数据,而不是重新分析...

电脑断电导致mysql不可用,删除ib_logfile0和ib_logfile1恢复

mysql安装在虚拟机中,公司突然断电导致mysql启动失败查看mysql的error日志2021-05-19T06:44:51.993300Z 0 [ERROR] InnoDB: Ignoring the redo log due to...

mysql事务的四个隔离机制理解

禁止自动提交 SET AUTOCOMMIT=0  开启自动提交 SET AUTOCOMMIT=1  读未提交 //设置read uncommitted级别: set ...