1)现象:
通过 VSCode 的插件 Remote - SSH 远程登录阿里云的 Ubantu22 服务器,过一段时间就会断开连接,且用页面连接时会提示连接不上:
2)排查:
将服务器强制重启后(理论上应该先对服务器创建快照备份,但我服务器上没什么重要的临时数据,所以直接强制重启了就),按照如下命令安装 atop 对系统进行监控:
apt -y install atop
atop
systemctl start atop
进入 atop 或 top 命令后,摁 Ctrl + C 退出监控页面
3)问题复现:
强制重启 Linux 后,通过 VSCode 远程连接,输入 atop 显示监控内容:
可见有一个进程把CPU打满了,CMD 为 "rg",ChatGPT 给出的解释为:
“rg” 是 “ripgrep” 的简称,它是一个非常快速的命令行搜索工具,用于在文件系统中递归地搜索文本模式。当它在处理大型文件目录结构或复杂的搜索模式时,可能会占用较高的 CPU 资源。
例如,如果你在一个包含大量代码文件的目录(如一个大型的代码仓库)中使用 “rg” 来查找一个特定的函数名或者代码片段,它会遍历所有文件来匹配你的搜索条件。如果搜索的范围很广,文件数量众多,并且可能涉及到大量的文本处理,就容易导致 CPU 占用率升高。
根据上面的解释,我意识到可能是因为我是通过 VSCode 连接的服务器的根目录 ".." 导致的,也就是上面那个截图最左侧显示的目录,是整个 Linux 服务器的 ".." ,这可能会导致 VSCode 不停地调用 "rg" 检索服务器文件。
3)解决问题:
改为连接服务器的 "root" 目录,而非根目录 ".." 。
如下图所示,atop 显示的监控也都正常了: