设为首页 加入收藏

TOP

MySQL占用内存和SWAP问题的解决方法
2017-12-29 06:06:36 】 浏览:108
Tags:MySQL 占用 内存 SWAP 问题 解决 方法

背景:

发现公司的项目部署上,经常出现数据库占用内存很高(接近6G)的情况,而且还出现了SWAP使用到90%左右的水平。所以需要排查数据库使用内存的情况,看数据库为什么使用了这么多内存,而且会不会频繁使用交换空间。

要解决的问题:

1、数据库使用高内存

2、数据库使用SWAP

解决思路:

一、SWAP空间

在内存不够的时候,磁盘空间当做内存。

系统默认已经分配了SWAP空间大小,可以通过指令“cat /proc/swaps”、“swapon -s”、“free”等命令查看Swap分区的情况。

二、系统关于SWAP的设置

vm.swappiness,这个一般需要设置成小于等于10。

设置方式:

这里写图片描述

三、查看是否发生内存泄露

通过free -gt 查看内存使用情况,如果cached 和 used 相差特别大的话,基本可确定系统发生内存泄露。

四、数据库使用NUMA对SWAP的影响

首先,NUMA到底是什么?

它表示给CPU动态分配内存,可能会导致当某个CPU需要占用大量内存的时候,会分配不了,然后就去占用SWAP的空间了。

解决方式:5.6.27之后的版本,修改mysql里面的innodb_numa_interleave配置。

如果版本比较低,则可以在mysql_safe的启动脚本中加上numactl –interleave all 来解决。

五、其他调整方式

1、修改innodb_flush_method为O_DIRECT,这样InnoDB会绕过Cache来访问磁盘。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Linux设置Oracle开机自启动 下一篇Ubuntu 16.04安装Oracle 11gR2入..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目