最近查看云服务器的 CPU 记录,在后半夜的时候总有一段时间飙升到 80%~100%,想来那个时间是各种蜘蛛来访的时段,也就造成了服务器负载飙升的现象。刚好看到了明月登陆博客发了一篇云服务器开启 SWAP 分区的教程,就拿来试试,看看效果如何。 检查了一下默认云服务器没有启用 SWAP 分区。 我这里创建 1G 的 SWAP 分区。 打开 XSHELL 连接到 VPS,输入一下命令: dd if=/dev/zero of=/mnt/swapfile bs=1MB count=1024 把刚才创建的文件做成 swap 文件 mkswap /mnt/swapfile 开启 swap swapon /mnt/swapfile 查看状态 swapon -s 查看内存状态 free -m =========以下操作能确保 swap 更安全,且重启后有效=========== 查看 vim /etc/rc.local 如果有 swapoff -a 修改为 swapon -a,我这里是没有这个的。 vim /etc/rc.local 设置自动挂载 vim /etc/fstab 把下面命令添加到最下面的空行。 /mnt/swapfile swap swap defaults 0 0 权限设置 chown root:root /mnt/swapfile chmod 0600 /mnt/swapfile 查看 swappiness 值。 cat /proc/sys/vm/swappiness 如果为 0 ,则将其改为 10 ·sysctl vm.swappiness=10 永久设置 swappiness,如果该文件里没有,则追加 vm.swappiness = 10 vim /etc/sysctl.conf 重启,那些永久设置项就生效了。 PS:swappiness=0 的时候表示最大限度使用物理内存,然后才是 swap 空间,swappiness=100 的时候表示积极的使用 swap 分区,并且把内存上的数据及时的搬运到 swap 空间里面。 从下面截图可以看到,可用内存只剩下 20M 了,完毕后重启了一下 lnmp,过程中确实比较缓慢(买之后就没重启过 lnmp,大概有 7 个多月了),等待时间长了一点。 如何关闭 swap 分区? 1. swapoff /data/swap 2. swapoff -a >/dev/null 理论上说很多人都信奉 Linux 服务器不启用 SWAP 的策略,也就是把所有资源都放到内存里面运行,大家都知道内存运行程序比硬盘要快上几百倍了。但是现在天天服务器都被各路蜘蛛一顿撸,估计也会卡出翔。重要的还是 SWAP 设定的合理性和 SWAP 使用频率调整度。 物理内存还够用的情况下,swap 空间上存储的是系统不会频繁使用的数据,调用的次数非常少,性能问题几乎可以忽略。 如果物理内存不够用了呢?系统会把物理内存放不下的数据放进 swap 里,因为它不得不这样做,这样一来就会造成系统频繁的操作 swap 数据。 SWAP 不能代替物理内存使用;SWAP 在小内存主机上必不可少。 2G 和 2G 以下内存的服务器,最好使用 SWAP 分区,设置成和物理内存相同容量 SWAP,2G 以上的,设置为 2G。 以上内容参考了明月登楼的博文 https://lnmp./lnmp/240.html,魏艾斯博客这里是测试一下,看看添加完 SWAP 分区之后,观察几天系统资源占用和 CDN 命中率是否有一定程度提升,等有结果了再来报告结果。 |
|
来自: 菌心说 > 《编程+、计算机、信息技术》