WDCP增加swap交换内存解决一段时间后连不上数据库问题

  • A+
所属分类:网络技术

什么是swap

swap分区或交换内存文件,是在系统物理内存不够用的时候,由系统内存管理程序将那些很长时间没有操作内存数据,临时保存到swap分区虚拟内存文件中,以提高可用内存额度的一种机制。当那些程序要再次重新运行时,会再从Swap分区或虚拟内存文件中恢复之前保存的数据到内存中。swap可以理解为服务器的虚拟内存。

阿里云ECS设置

认为没必要设置虚拟内存,原文地址https://help.aliyun.com/knowledge_detail/40645.html

相关操作会导致额外的IO开销,特别是,如果内存使用率已经非常高,而同时IO性能也不是很好的情况下,该机制其实会起到相反的效果:不仅系统性能提升较小(因为内存使用率已经非常高了),而且由于频繁的内存到SWAP的切换操作,会导致产生大量额外的IO操作,导致IO性能进一步降低,最终反而降低了系统总体性能。

同时,为了保证服务器数据安全性和可靠性,阿里云ECS云磁盘使用了分布式文件系统作为云服务器的存储,对每一份数据都进行了强一致的多份拷贝。但是,该机制在保证用户数据安全的同时,由于3倍增涨的IO操作,会导致本地磁盘的存储性能和IO性能要弱一些。

综上,为了避免当系统资源不足时进一步降低ECS云磁盘的IO性能,所以ECS Windows默认没有启用虚拟内存,Linux默认未配置SWAP分区。

目前运行事实说明有必要启用swap内存

Swap内存大小设置为2g。关于Swap应该设置多少的问题,并没有直接依据。综合各种观点,设置为2g。不再赘言。以下以WDCP环境为例说明,如果是其他环境,命令的目录与WDCP不同。

swappiness值

swappiness是一个0到100之间的整数。粗略表示主机使用内存和Swap的优先度。但并不严格,一般默认为60。参考链接https://www.douban.com/note/349467816/

swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。

步骤

1 SSH登录主机,查看Swap

cat /proc/swaps

2 新建2g Swap

cd /var/
dd if=/dev/zero of=swapfile bs=1024 count=2097152

3 生成Swap文件(创建交换空间)

/sbin/mkswap swapfile

4 启用新增加的Swap空间

/sbin/swapon swapfile

5 查看Swap,确认已经生效

free -m

6 把生成的Swap分区加入到fstab文件中,让系统引导时启动

echo "/var/swapfile swap swap defaults 0 0" >>/etc/fstab

7 查看swappiness参数

cat /proc/sys/vm/swappiness

8 修改swappiness参数为60(临时修改)

echo 60 > /proc/sys/vm/swappiness

9 永久生效

(用FTP)修改/etc/sysctl.conf文件, 在文件里添加如下参数:

vm.swappiness=10

10 删除Swap分区

先停止swap分区

/sbin/swapoff /home/swap

删除swap分区文件

rm -rf /home/swap

修改/etc/fstab文件,把/home/swap swap swap default 0 0这行删除。

weinxin
独角兽驿站
公众号

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: