开个头 2026-03-14 15:28 采纳率: 0%
浏览 6

vscode用remote-ssh连接远程服务器断连问题

vscode使用remote-ssh总是出现断连问题,尤其在编译或者多个窗口连接时,内存被瞬间打满,导致宕机,问了客服客服说是vscode这边的问题,就算提升配置也还是会被打满,大家有什么好的解决办法吗?

  • 写回答

2条回答 默认 最新

  • 檀越@新空间 2026-03-14 15:29
    关注

    下午好🌅🌅🌅
    本答案参考通义千问

    你提到的 VSCode 通过 Remote-SSH 连接远程服务器时出现断连问题,尤其是在编译或多个窗口连接时导致内存被瞬间打满,这确实是一个比较常见的问题。以下是一些详细解决方案,帮助你排查和缓解这个问题。


    ✅ 一、问题分析

    1. Remote-SSH 是基于 SSH 的 VSCode 扩展,它会将远程服务器上的 VSCode 服务(即 vscode-server)运行在远程机器上。
    2. 当进行编译、多窗口操作或加载大型项目时vscode-server 可能会占用大量内存。
    3. 如果远程服务器内存不足,系统可能会强制终止 vscode-server 进程,导致 VSCode 断开连接。

    ✅ 二、解决方案

    1. 优化远程服务器配置

    重点:增加远程服务器的内存或使用更高配置的实例。

    • 如果你使用的是云服务器(如 AWS、阿里云等),可以考虑升级为 更高内存的实例类型(例如从 t3.small 升级到 t3.medium 或以上)。

    • 增加 Swap 分区(即使没有物理内存,也可以避免进程被 OOMKilled):

      sudo fallocate -l 4G /swapfile
      sudo chmod 600 /swapfile
      sudo mkswap /swapfile
      sudo swapon /swapfile
      

      然后将 /etc/fstab 添加如下行以永久生效:

      /swapfile   none    swap    sw    0   0
      

    2. 限制 vscode-server 的资源使用

    可以通过修改 ~/.vscode-server/bin/xxx 目录下的启动脚本,限制其内存使用。

    步骤如下:

    1. 打开远程服务器的终端,找到 vscode-server 的安装目录(通常为 ~/.vscode-server/bin/)。

    2. 修改 server.sh 文件,添加内存限制参数:

      # 在 server.sh 中添加以下内容
      ulimit -m 2048000  # 限制内存为 2GB(单位 KB)
      ulimit -v 2048000
      

      注意:根据你的实际内存情况调整数值。


    3. 关闭不必要的扩展和服务

    有些扩展可能在远程服务器上持续运行,占用资源。建议:

    • 禁用非必要扩展(如 LSP、调试器、插件等)。
    • .vscode-server 目录中删除不常用的扩展文件夹。

    4. 使用 --no-cached-data 启动远程连接

    如果你不需要缓存数据,可以尝试使用以下命令启动 VSCode:

    code --remote ssh://username@remote_host --no-cached-data
    

    这样可以减少缓存带来的内存压力。


    5. 使用 ssh 配置优化

    确保 ~/.ssh/config 文件中配置了合理的 SSH 参数,避免频繁连接:

    Host your-remote-server
      HostName your.remote.server.ip
      User your_username
      Port 22
      IdentityFile ~/.ssh/id_rsa
      TCPKeepAlive yes
      ServerAliveInterval 60
      ServerAliveCountMax 3
    

    这些设置可以让 SSH 保持连接活跃,避免因超时断开。


    6. 使用更轻量级的编辑器替代方案

    如果你的项目不需要复杂的 VSCode 功能,可以考虑:

    • 使用 vimnano 编辑代码
    • 使用 Web-based IDE(如 Gitpod、CodeSandbox 等)。
    • 使用 本地开发 + 远程部署 的方式,只在远程执行构建任务。

    ✅ 三、代码示例(修改 server.sh

    如果你需要手动修改 server.sh 来限制内存,以下是示例代码片段:

    #!/bin/bash
    
    # 限制内存使用(单位 KB)
    ulimit -m 2048000
    ulimit -v 2048000
    
    # 原始启动命令
    exec "$VSCODE_SERVER_DIR/vscode" "$@"
    

    将此代码替换原 server.sh 中的启动部分即可。


    ✅ 四、总结

    | 问题原因 | 解决方法 | |----------|----------| | 内存不足 | 升级服务器配置或添加 Swap | | vscode-server 内存占用过高 | 限制内存使用或关闭非必要扩展 | | SSH 连接不稳定 | 配置 SSH KeepAlive 和超时参数 | | 多窗口/编译任务 | 优化项目结构或使用轻量工具 |


    如果你能提供更多关于远程服务器的配置信息(如内存大小、CPU、使用的扩展等),我可以进一步帮你定制解决方案。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月14日