linux优化mysql内存占用_MYSQL在LINUX上优化方法

本文探讨了Linux系统中内存的三种状态:free、active和inactive,特别关注了inactive内存如何影响MySQL,尤其是InnoDB的性能。由于不活跃内存可能被错误地交换到swap,导致额外的CPU和IO资源浪费,建议将`vm.swappiness`设为0以减少这种交换。通过修改`/etc/sysctl.conf`文件并应用`sysctl -p`,可以实现这一优化策略。
摘要由CSDN通过智能技术生成

我们可以利用vmstat看到inactive的内存的数量:

#vmstat -an 1

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----

r b swpd free  inact  active si so bi bo in cs us sy id wa st

1 0 0 27522384 326928 1704644 0 0 0 153 11 10 0 0 100 0 0

0 0 0 27523300 326936 1704164 0 0 0 74 784 590 0 0 100 0 0

0 0 0 27523656 326936 1704692 0 0 8 8 439 1686 0 0 100 0 0

0 0 0 27524300 326916 1703412 0 0 4 52 198 262 0 0 100 0 0

通过/proc/meminfo 你可以看到更详细的信息:

#cat /proc/meminfo | grep -i inact

Inactive: 326972 kB

Inactive(anon): 248 kB

Inactive(file): 326724 kB

这里我们对不活跃inactive内存进一步深入讨论。 Linux中,内存可能处于三种状态:free,active和inactive。众所周知,Linux Kernel在内部维护了很多LRU列表用来管理内存,比如LRU_INACTIVE_ANON, LRU_ACTIVE_ANON, LRU_INACTIVE_FILE , LRU_ACTIVE_FILE, LRU_UNEVICTABLE。其中LRU_INACTIVE_ANON, LRU_ACTIVE_ANON用来管理匿名页,LRU_INACTIVE_FILE , LRU_ACTIVE_FILE用来管理page caches页缓存。系统内核会根据内存页的访问情况,不定时的将活跃active内存被移到inactive列表中,这些inactive的内存可以被 交换到swap中去。

一般来说,MySQL,特别是InnoDB管理内存缓存,它占用的内存比较多,不经常访问的内存也会不少,这些内存如果被Linux错误的交换出去了,将 浪费很多CPU和IO资源。 InnoDB自己管理缓存,cache的文件数据来说占用了内存,对InnoDB几乎没有任何好处。

所以,我们在MySQL的服务器上最好设置vm.swappiness=0。

我们可以通过在sysctl.conf中添加一行:

echo "vm.swappiness = 0" >>/etc/sysctl.conf

并使用sysctl -p来使得该参数生效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值