关于博客神秘宕机之谜
编辑前些天在完成公安部信息安全备案的时候,收到 审核不通过 备注:网站无法访问,请维护好后,再上传
一直很奇怪明明服务器一切正常,但程序却一直不规律重启,每次查看日志均提示内存有问题,为此我还重新更换了服务器问题依旧没有得到改善。然后我去查看了相关日志信息,发现SEO插件中提示 Google 和 baidu 分别进行了数据抓取,是不是因为他们抓取的频率太高导致程序崩溃的呢,于是我去做了相关配置,并且禁用了SEO索引,但问题依旧。
就在我百思不得其解的时候想起来之前在QQ群里有人说MySQL服务器经常僵死,也是内存原因导致。最终他将系统的交换分区Swap设置后得到了解决。于是我立马连接服务器 `free -h` 一看。果然,这台机器没有交换分区(阿里云的云服务器)。
于是我进行了相关配置,观察了几个月下来发现服务没有宕机的情况发生。至此我宣布,博客宕机之谜已经解决。其中的原因就是云服务器默认没有配置交换分区,导致部分程序需要用到交换分区时服务就无法正常运行,最终导致程序报错、宕机。这种现象常发生在小内存的服务器上。
这里贴上阿里云对Swap的解释:
SWAP分区介绍
在Linux系统中的SWAP(交换分区),类似于Windows系统的虚拟内存。系统会把一部分硬盘空间虚拟成内存使用,将系统内非活动内存换页到SWAP,以提高系统可用内存。
若你也面临着和我一样的困扰,可以跟着我的步骤进行操作:
SWAP配置介绍
以root用户身份,通过远程连接登录Linux实例,执行以下命令,创建用于交换分区的文件。
dd if=/dev/zero of=/mnt/swap bs=block_size count=number_of_block
注:
block_size
、number_of_block
大小可以自定义,比如bs=1M count=1024
代表设置1G大小SWAP分区。执行以下命令,设置交换分区文件。
mkswap /mnt/swap
执行以下命令,启用交换分区文件。
swapon /mnt/swap
注:如果在
/etc/rc.local
中有swapoff -a
需要修改为swapon -a
。设置开机时自启用SWAP分区,需要修改文件
/etc/fstab
中的SWAP行,添加以下代码。/mnt/swap swap swap defaults 0 0
注:
/mnt/swap
路径可以修改,可以根据创建的SWAP分区文件具体路径来配置。执行以下命令,临时修改
swappiness
参数值,此处以空闲内存少于10%时才使用SWAP分区为例。提示:在Linux系统中,可以通过查看
/proc/sys/vm/swappiness
内容的值来确定系统对SWAP分区的使用原则。当swappiness
内容的值为0
时,表示最大限度地使用物理内存,物理内存使用完毕后,才会使用SWAP分区。当swappiness
内容的值为100
时,表示积极地使用SWAP分区,并且把内存中的数据及时地置换到SWAP分区。查看修改前为0
,需要在物理内存使用完毕后才会使用SWAP分区。echo 10 >/proc/sys/vm/swappiness
若需要永久修改此配置,在系统重启之后也生效的话,通过vim命令编辑
/etc/sysctl.conf
文件,并增加以下内容。vm.swappiness = 10
执行以下命令,验证添加成功。
sysctl -p
关闭SWAP分区
当系统出现内存不足时,开启SWAP可能会因频繁换页操作,导致IO性能下降,可以采用以下方法,关闭SWAP分区。
执行以下命令,查询SWAP分区设置。
free -m
系统显示类似如下。
执行以下命令,关闭SWAP分区。
swapoff [$SWAP_File]
注:[$SWAP_File]SWAP分区标识。
系统显示类似如下。
通过
vim
命令,修改/etc/fstab
文件,删除或注释相关配置,取消SWAP的自动挂载,系统显示类似如下。执行以下命令,确认SWAP分区已经关闭。
free -m
系统显示类似如下。
执行以下命令,临时修改swappiness参数值。此处以空闲内存为0%为例。
echo 0 >/proc/sys/vm/swappiness
若需要永久修改此配置,在系统重启之后也生效的话,通过vim命令编辑
/etc/sysctl.conf
文件,并增加以下内容。vm.swappiness = 0
执行以下命令,验证添加成功。
sysctl -p
常见问题处理
常见问题描述
使用mkswap创建SWAP时出现类似如下报错信息:
mkswap: error: swap area needs to be at least 40 KiB
问题原因
指定的SWAP分区文件太小,SWAP分区文件至少应该大于40KB。
解决方法
重新生成更大的文件格式化为SWAP即可。
内容引用于Linux实例SWAP分区的配置和常见问题如何处理-阿里云帮助中心_(ECS)-阿里云帮助中心 (aliyun.com)
- 0
-
分享