云计算百科
云计算领域专业知识百科平台

【已解决】VSCode 连接 Linux 云服务器,代码写着写着服务器突然挂了是怎么回事?

文章目录

  • 1. 问题描述
  • 2. 问题原因
  • 3. 解决方法

在这里插入图片描述

1. 问题描述

在使用 VSCode 连接远程 Ubuntu 云服务器写代码的时候,感觉越写越卡,代码提示半天出不来,最后更是直接断开连接了:

在这里插入图片描述

即使把 VSCode 关了,再重启也没用,再次登录直接秒挂;

只能重启服务器,但是重启后写一段时间还是会挂。

2. 问题原因

一般来说,这种情况是服务器配置太低造成的,比如我的服务器内存只有 2G,代码 / 包含的库 稍微多一点,VSCode 一会就把内存搞爆了,这时候我们可以使用 htop 指令查看资源占用情况:

在这里插入图片描述

可以看到有 60% 的内存都被 VSCode 占用了,在这种情况下,关闭 VSCode 以后可以缓解,但是如果再次打开,内存占用又会爆满。

个人猜测:

在我们写代码的时候,如果在 VSCode 上安装了相关的代码插件,为了及时显式代码的提示信息,VSCode 会把相关库的内容全部拉到内存中,如果这些库很大,再加上 VSCode 本身的内存消耗,就会导致内存被大量占用,尤其是我的内存只有 2G,很容易就把内存打满了,造成服务器运行缓慢 / 无响应。

3. 解决方法

  • 添加 Swap 内存扩展(推荐)

    通过上面 htop 界面可以发现,在内存 Mem 的下方还有一个 Swp ,这是什么意思呢?这也是一块内存空间吗?其实在 Linux 系统上允许使用磁盘空间来充当内存空间。通过添加和配置 Swap 空间,可以在内存不足的情况下利用磁盘空间作为虚拟内存,从而缓解内存压力。

  • 检查是否已有 Swap 空间

    首先,检查系统是否已经配置了Swap空间:

    sudo swapon –show

    如果没有输出,说明系统没有配置Swap空间。

  • 创建 Swap 文件

    以下是创建 1GB Swap 文件的步骤:

    # 创建一个 1GB 的 Swap 文件
    sudo fallocate -l 1G /swapfile

    如果 fallocate 命令不可用,可以使用以下命令代替:

    sudo dd if=/dev/zero of=/swapfile bs=1M count=1024

  • 设置正确的权限

    为了确保只有 root 用户可以访问 Swap 文件,需要设置文件权限:

    sudo chmod 600 /swapfile

  • 将文件转换为 Swap 空间

    使用 mkswap 命令将文件转换为 Swap 空间:

    sudo mkswap /swapfile

  • 启用 Swap 文件

    启用刚刚创建的 Swap 文件:

    sudo swapon /swapfile

    你可以再次使用 sudo swapon –show 命令确认 Swap 空间已经启用。

  • 永久启用 Swap 文件

    为了在系统重启后依然保留 Swap 文件,需要将其添加到 /etc/fstab 中:

    sudo sh -c 'echo "/swapfile none swap sw 0 0" >> /etc/fstab'

  • 检查 Swap 空间使用情况

    使用以下命令检查 Swap 空间的使用情况:

    free -h

    你将看到类似如下的输出:

    total used free shared buff/cache available
    Mem: 2.0G 1.5G 100M 100M 400M 300M
    Swap: 1.0G 256M 744M

  • 这样,你就可以通过添加和配置 Swap 空间来扩展虚拟内存,缓解内存不足的问题。这种方法适用于低内存配置的服务器,可以显著提高系统的稳定性和性能。

    实际测试下来,Swap 虚拟内存空间慢是慢了点,但是服务器的内存不会再爆满了,所以个人还是比较推荐使用这种方法。除此之外 Swap 空间也可以进行其他的参数调整,以便适应不同的工作环境,大家感兴趣可以自己研究一下。

    在这里插入图片描述

  • 升级服务器配置

    如果你是一个全职程序员,在遇到这种问题的时候,升级配置是很有必要的。

  • 禁用插件

    如果你是一个学生,或者没有那么多资金来升级配置,那么你可以通过禁用大量占用内存的插件来解决内存问题,但是这样会很影响我们写代码的效率。

  • 手动终止进程

    这是我之前用过的方法,如果你不想升级配置,也不想删除实用插件,那么你可以试试手动把占用内存高的进程终止掉。但是随着代码量不断增加,刚清理出来的内存很快又会被占满,所以这个方法只适合应急。

    • 使用 htop 指令打开资源管理器,这里面可以直接用鼠标进行操作,很方便;

      在这里插入图片描述

    • 选中一个进程后,键入 F9 或者直接鼠标点击 kill ;

      在这里插入图片描述

    • 现在你可以选择要给 进程 发送的 信号 ,一般默认的 SIGTERM(进程终止信号) 即可达到我们的目的;

    • 完成后可以看到内存空间被清理出来了,经过我的测试下来,这个操作并不会对正在运行的 VSCode 和正在编写的代码造成什么影响。但是继续写代码,又会继续占用内存,所以我们感觉到卡顿的时候,应该去及时查看一下内存使用情况;

      在这里插入图片描述

    • 程序在编译时也会大量占用内存,如果你经常在程序编译时卡死,那么你应该在程序编译前清理一下内存。

  • 待补充…


  • END

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 【已解决】VSCode 连接 Linux 云服务器,代码写着写着服务器突然挂了是怎么回事?
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!