如何查看自己购买的VPS、云服务器是否存在内存超售问题,对于VPS、云服务器来说都是属于虚拟服务器,虚拟服务器很多不良商家会选择超售的手段来谋求利润,所以主机玖玖介绍了很多关于服务器测评的脚本,大家可以到博客搜!
这里建站经验分享在分享一个关于服务器内存超售的检测脚本,可以一键检测服务器内存是否存在超售的可能,但是只是是否存在超售的可能!此脚本名为memoryCheck服务器内存超售一键检测脚本,可以一键检测服务器是否启用了内存交换、气球驱动、KSM等方式进行超售!当然这个只是可能会存在这方面的超售可能!
下面是memoryCheck服务器内存超售一键检测脚本使用命令!
执行下面命令当中的任意一个即可!
curl https://raw.githubusercontent.com/uselibrary/memoryCheck/main/memoryCheck.sh | bash
如果第一个命令执行起来出错就使用下面命令!
wget --no-check-certificate -O memoryCheck.sh https://raw.githubusercontent.com/uselibrary/memoryCheck/main/memoryCheck.sh && chmod +x memoryCheck.sh && bash memoryCheck.sh
下面是使用memoryCheck服务器内存超售一键检测脚本测试效果。
关于如果出现Balloon方式超售不要认为有多大的问题,大部分商家都会开启,这个可以使用自己的root权限进行关闭,只需SSH连接服务器后使用下面代码即可:
rmmod virtio_balloon
使用上面代码后在使用脚本检测一般都不会再提示了!
前面说到了memoryCheck服务器内存超售一键检测脚本关于可以检测服务器是否启用了内存交换、气球驱动、KSM等方式的超售,下面就详细介绍下什么是内存交换、气球驱动、KSM!
1、内存交换(Swap)
当系统内存不够用时,宿主机把部分长时间未操作(读写)的内存交换到磁盘上配置的Swap分区,等相关程序需要运行时再恢复到内存中。
2、气球驱动(Balloon)
通过virtio_balloon驱动实现动态调整Guest与Host的可用内存空间。Balloon的工作原理是在虚拟机中安装一个kmod,KVM宿主机内存不足,会根据virtio_balloon判断哪些内存页面可以被回收,然后virtio_balloon将这些内存占用,返回给宿主机使用。
root用户执行rmmod virtio_balloon可以关闭virtio_balloon。事实上,大多数使用Proxmox VE的厂商都会开启virtio_balloon进行超售。
3、KSM(Kernel Samepage Merging 内存合并)
KSM是一种内存合并技术,它可以在KVM中实现内存共享,从而节省内存空间。是Linux kernel的一种内存共享机制,在2.6.32版本引入,用于合并具有相同内容的物理主存页面以减少页面冗余。在Kernel中KSM会定期扫描用户注册的内存区域,当有相同的页面就会将其合并,并用一个添加到页表中的新页面来代替原来的页面。当需要修改时,复制新的内存页,再做修改(将其标记为 copy-on-write)