868 字
4 分钟
阿里云服务器频繁崩溃、SSH 连不上?可能是 `dnf makecache` 在 “捣鬼”!
2025-05-09
站长最近购买了几台阿里云的轻量应用服务器,配置都不怎么高,主要是用于跑跑网站服务的。用了几天发现服务器经常莫名卡死,CPU 占用率直接拉满、SSH无法连接。阿里云自助诊断异常为“磁盘IO出现延迟过长,或达到该磁盘类型的IO上限”。
经过排查发现居然是由dnf makecache服务导致的该问题。dnf makecache
是用于生成或更新 DNF(Dandified Yum)
软件包管理器缓存的服务。它会将软件包的元数据(如软件包名称、版本、依赖关系等信息)存储在缓存中。生成或更新缓存后,当使用dnf
进行软件包搜索、安装、更新等操作时,系统无需每次都从远程仓库获取数据,直接读取缓存就能显著加快操作速度。
不过,这个服务存在一个弊端,它会占用大量内存。尤其是在配置较低、运行内存较小的服务器上(例如站长的 2h2G 轻量服务器),问题更为明显。过高的内存占用会触发内存交换(Swap)机制,使得 CPU 花费大量时间处理数据交换,进而导致 CPU 使用率急剧上升,最终达到磁盘 I/O 的读写上限,出现磁盘 IO 延迟过长的问题。伴随而来的就是服务器卡死,SSH连接不上。
从系统日志能看到相关记录:
May 8 22:05:19 iZj6c5jsfaanuv32mcgyevZ systemd[1]: Starting dnf makecache...May 8 22:05:20 iZj6c5jsfaanuv32mcgyevZ dnf[389128]: CentOS Stream 9 - BaseOS 48 kB/s | 3.9 kB 00:00May 8 22:05:20 iZj6c5jsfaanuv32mcgyevZ dnf[389128]: CentOS Stream 9 - AppStream 1.0 MB/s | 4.4 kB 00:00May 8 22:05:20 iZj6c5jsfaanuv32mcgyevZ dnf[389128]: CentOS Stream 9 - CRB 51 kB/s | 4.3 kB 00:00May 8 22:05:20 iZj6c5jsfaanuv32mcgyevZ dnf[389128]: CentOS Stream 9 - Extras packages 23 kB/s | 3.0 kB 00:00May 8 22:05:21 iZj6c5jsfaanuv32mcgyevZ dnf[389128]: Extra Packages for Enterprise Linux 9 - x86_64 17 kB/s | 9.9 kB 00:00May 8 22:05:21 iZj6c5jsfaanuv32mcgyevZ dnf[389128]: Extra Packages for Enterprise Linux 9 - x86_64 17 kB/s | 9.9 kB 00:00
解决方法
- 强制重启服务器:在阿里云控制面板中,找到强制重启服务器的选项,对出现问题的服务器进行重启操作。
- 禁用 dnf makecache 服务:服务器重启后,通过 SSH 连接到服务器,然后在命令行中依次输入以下两条命令:
systemctl stop dnf-makecache.timersystemctl disable dnf-makecache.timer
以上问题大多出现在CentOS系统的服务器上,例如CentOS 8和CentOS Stream 9,例如站长其中两台装了CentOS Stream 9的服务器都出现了这个情况。
额外建议
如果你的阿里云服务器配置较低,除了处理 dnf makecache 服务的问题,还可以考虑卸载阿里云监控服务。因为阿里云监控会定时扫描检查服务器,这也可能导致服务器资源占用过高。卸载方法如下:
卸载命令助手
# 停止云助手守护进程/usr/local/share/assist-daemon/assist_daemon --stop
# 卸载云助手守护进程/usr/local/share/assist-daemon/assist_daemon --delete
# 删除云助手守护进程目录rm -rf /usr/local/share/assist-daemon
卸载云监控插件
# 查询实例是否使用systemd初始化进程服务,有返回信息则表示使用的是systemdstrings /sbin/init | grep "/lib/system"
# 停止云助手Agentsystemctl stop aliyun.service
# 卸载云助手Agentsudo rpm -qa | grep aliyun_assist | xargs sudo rpm -e
希望这些内容能帮助你解决阿里云服务器的相关问题。如果对你有帮助,欢迎点赞支持!
阿里云服务器频繁崩溃、SSH 连不上?可能是 `dnf makecache` 在 “捣鬼”!
https://www.tr0.cn/645/