云服务器、VPS服务器都是虚拟服务器,虚拟服务器就有可以能存在内存、CPU、硬盘等资源超售的问题,因此选择虚拟服务器过程当中一定要擦亮眼睛,尽量选择知名商家产品!关于如何检测服务器内存是否超售!建站经验分享这里分享一个新看到的Linux服务器内存是否超售一键检测脚本“memoryCheck”,先不评判此脚本检测的真实性有多少,但是至少是可以作为参考的!因为memoryCheck服务器内存超售一键检测脚本可以检测服务器是否存在开启了内存交换(Swap)、气球驱动(Balloon)、KSM(Kernel Samepage Merging 内存合并)等方式的内存超售的可能!目前建站经验分享测试了几个机器发现都启用了气球驱动(Balloon),但是一般来说我们使用的云服务器可以通过root用户执行“rmmod virtio_balloon”可以关闭Balloon!因此可以试试!
另外建站经验分享也分享过一下一键检测服务器性能及网络质量的脚本,详情可以查看下面文章:
- Linux系统服务器如何进行网络优化?试试这个目前最好用的Linux一键启用BBR、BBR2、BBR Plus网络优化脚本
- LemonBench一键综合性能测试脚本_可一键测试Linux服务器系统网络信息、IP流媒体解锁情况、CPU硬盘性能及带宽线路和速度
- 如何测试服务器真实线路情况_使用PING测速工具及一键回程路由追踪脚本来测试服务器线路教程
一、memoryCheck内存超售一键检测脚本使用命令
使用SSH工具连接自己服务器后,执行下面命令当中的任意一个即可!
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
检测后的效果大致如下图:
第一个图片范围的结果应该是比较好的内存交换Swap、气球驱动Balloon、KSM超售都没有!
如果内存交换Swap、气球驱动Balloon、KSM有开启,会显示如下:
一般来说如果检测出存在只是表示可能存在超售,其中气球驱动Balloon方式超售其实是可以自己关闭的,以root用户权限执行“rmmod virtio_balloon”就可以关闭virtio_balloon模块,其实这个virtio_balloon绝大多数商家都会开启!
rmmod virtio_balloon
二、什么是内存交换Swap、气球驱动Balloon、KSM
下面详细介绍下什么是内存交换Swap、气球驱动Balloon、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)