文章

Bug:使用vscode通过ssh远程登录阿里云linux服务器异常崩溃

Bug:使用vscode通过ssh远程登录阿里云linux服务器异常崩溃

1)现象:

通过 VSCode 的插件 Remote - SSH 远程登录阿里云的 Ubantu22 服务器,过一段时间就会断开连接,且用页面连接时会提示连接不上:

9c788792acd743dda2dbe116899910a8

2)排查:

将服务器强制重启后(理论上应该先对服务器创建快照备份,但我服务器上没什么重要的临时数据,所以直接强制重启了就),按照如下命令安装 atop 对系统进行监控:

apt -y install atop
atop  
systemctl start atop

进入 atop 或 top 命令后,摁 Ctrl + C 退出监控页面

3)问题复现:

强制重启 Linux 后,通过 VSCode 远程连接,输入 atop 显示监控内容:

fe3a3b3f71474255897c770b1e81022c

可见有一个进程把CPU打满了,CMD 为 “rg”,ChatGPT 给出的解释为:

“rg” 是 “ripgrep” 的简称,它是一个非常快速的命令行搜索工具,用于在文件系统中递归地搜索文本模式。当它在处理大型文件目录结构或复杂的搜索模式时,可能会占用较高的 CPU 资源。

例如,如果你在一个包含大量代码文件的目录(如一个大型的代码仓库)中使用 “rg” 来查找一个特定的函数名或者代码片段,它会遍历所有文件来匹配你的搜索条件。如果搜索的范围很广,文件数量众多,并且可能涉及到大量的文本处理,就容易导致 CPU 占用率升高。

用 htop 查看监控面板也是同样的内容:

9c95b1cfcf3a4e718461262b9655645b

打满 cpu 的进程来自 vscode,同样是咨询了豆包,豆包给出的一个解决方案我感觉很有参考价值:

禁用不必要的扩展,某些扩展可能会在后台执行大量计算。 常见高资源扩展:GitLens、ESLint、Prettier、TypeScript 扩展等。

根据上面的解释,我意识到有两个问题可能导致了崩溃:

  1. 可能是因为 VSCode 连接的服务器的根目录 “..” 导致的,也就是 atop 截图中最左侧显示的目录,是整个 Linux 服务器的 “..” ,这可能会导致 VSCode 不停地调用 “rg” 检索服务器文件。
  2. 可能是因为 VSCode 插件导致的,我确实在远端也启用了 Git 相关的插件。

3)解决问题:

  • 改为连接服务器的 “root” 目录,而非根目录 “..” 。

  • 如下图所示,atop 显示的监控也都正常了:

    ade56dd439c24786a04a544911209563

  • 禁用远端服务器上的大部分三方扩展,尤其是 git 相关的

4)更新

2025年8月6日:经反复测试,应该是 VSCode 的第三方拓展导致的,禁用拓展以后就不会再有如上问题出现了

本文由作者按照 CC BY 4.0 进行授权