snapd服务导致服务器崩溃平台无法启动

/

问题现象:系统正常运行一段时间后,服务器io读写异常,导致服务器崩溃,使用top命令查看sanpd服务运行,如下图;

问题原因:后台更新占用资源:snapd 默认会自动更新 Snap 应用(如 lxd, core 等)。若多个大型 Snap 同时更新(尤其是更新失败重试时),可能短暂占用大量 CPU/磁盘 I/O,导致服务延迟。
更新冲突:某些 Snap 更新可能与服务器关键服务冲突(如内核服务),极端情况下可能引发不稳定。平台在进行一些业务操作时io读写升高,短暂与服务冲突后导致服务器崩溃,特定版本的 snapd 可能存在 Bug(如 LP #1970751 曾导致高 I/O)。
解决方法:
需要停止并删除snapd服务,因为Apache/Nginx/MySQL/Docker,标准服务(如SSH、防火墙、Web服务)等不依赖Snapd的运行通过apt安装的服务完全独立于Snap生态系统,不受影响,停用删除后平台服务不会有影响;

1、

  1. # 停止当前运行的Snapd服务
  2. sudo systemctl stop snapd.service snapd.socket
  3. # 禁用服务防止开机自启
  4. sudo systemctl disable snapd.service snapd.socket
  5. # 屏蔽服务(彻底阻止激活)
  6. sudo systemctl mask snapd.service snapd.socket

2、

  1. # 卸载所有Snap软件包及Snapd核心
  2. sudo snap remove --purge $(snap list | awk '!/^Name|^core/ {print $1}') #如服务器未有基于snapd安装服务执行此命令未有返回为正常
  3. sudo apt autoremove --purge snapd -y
  4. # 清理残留文件
  5. sudo rm -rf ~/snap /snap /var/snap /var/lib/snapd /var/cache/snapd
  6. # 阻止未来安装Snapd(下面的五行是一条命令)
  7. sudo tee /etc/apt/preferences.d/nosnap.pref > /dev/null <<EOL
  8. Package: snapd
  9. Pin: release a=*
  10. Pin-Priority: -10
  11. EOL

3、验证停用删除结果

  1. # 检查服务状态(应显示inactive和masked,如下图)
  2. sudo systemctl status snapd.service | grep -e Active -e Loaded

  1. # 尝试启动服务(应启动失败,如下图)
  2. sudo systemctl start snapd.service


4、验证完成后,重启开放平台及人员定位系统等服务
ZGL(0730)

转载请注明作者和出处,并添加本页链接。
原文链接: //svn.seekcy.com/808