在使用阿里云等云服务时,服务器经常会出现无法登录的情况,尤其是 SSH 无法连接的问题。每次重启服务器后,系统可以暂时恢复正常,但仅仅 1-2 天后问题又会复发,给业务带来困扰。这种情况通常是由于服务器内存耗尽造成的,导致系统无法响应正常的请求。
常见原因
当服务器出现“内存耗尽”的问题时,系统会进入一个“挂起”状态,这时候无法登录 SSH,也无法进行任何操作。一般来说,常见的内存耗尽原因包括:
- 没有分配足够的 Swap 虚拟内存,系统在内存不足时无法进行内存交换,导致内存过载。
- 某些不必要的服务消耗过多内存,例如
dnf-makecache
服务,它会定期运行并更新软件包缓存,可能会在内存有限的情况下造成额外负担。
解决方案
针对这些常见的内存耗尽问题,以下是几个有效的解决步骤:
一、禁用 dnf-makecache
服务
dnf-makecache
是一个用于更新本地软件包缓存的服务,它会定期运行。虽然这个服务在某些场景下是有用的,但它会消耗一定的内存,尤其是当服务器资源有限时,它可能会导致内存压力增大。
你可以禁用该服务,以防止它在不需要的时候占用过多资源。
操作步骤:
-
停止
dnf-makecache
服务:执行以下命令停止该服务:
systemctl stop dnf-makecache.timer
-
禁用该服务的自动启动:
禁用
dnf-makecache
的定时任务,避免它在每次启动后再次自动运行:systemctl disable dnf-makecache.timer
二、分配 Swap 虚拟内存
如果服务器没有足够的物理内存,Swap(虚拟内存)可以帮助缓解内存不足的情况。Swap 是硬盘上的一部分空间,当内存使用过多时,操作系统会把一些不常用的内存数据写入 Swap,从而腾出物理内存供其他任务使用。
在阿里云服务器上,通常没有预设 Swap 空间,尤其是在一些小型实例中,可能根本没有配置 Swap。你可以手动为服务器分配 Swap 空间。
操作步骤:
-
创建一个 6GB 的 Swap 文件:
使用以下命令在服务器上创建一个 6GB 的 Swap 文件:
dd if=/dev/zero of=/swapfile bs=1M count=6144
-
设置文件权限:
为 Swap 文件设置适当的权限:
chmod 600 /swapfile
-
将文件设置为 Swap 空间:
执行以下命令,将这个文件设置为 Swap 空间:
mkswap /swapfile
-
启用 Swap 空间:
启动 Swap 空间:
swapon /swapfile
-
设置 Swap 文件自动挂载:
为了确保服务器重启后,Swap 文件能自动加载,你需要编辑
/etc/fstab
文件,添加如下内容:/swapfile swap swap defaults 0 0
-
检查 Swap 配置:
使用以下命令查看 Swap 是否生效:
swapon -s
-
或者使用:free -m
这样就可以查看Swap 空间的使用情况。
免费素材下载: https://stjl.xyz/