【服务器问题】xshell 登录远程服务器卡住( 而 vscode 直接登录不上)

打开 xshell ssh 登录远程服务器:卡在下面这里,迟迟不继续

当 SSH 连接卡在 Connection established. 之后,但没有显示远程终端提示符时,这通常意味着连接已经成功建立,说明不是网络连接和服务器连接问题,可能就是服务器自己的问题了



一、直接的解决办法(重点)

查明原因

打开服务器官网(我用的是阿里云的服务器),查看你的服务器的相关运行信息

如果发现你的机器如下图一样,CPU占用和硬盘IO的数据有点不对劲(有点高了),这表示当前你的机器被大量服务使用着(可能是运行着某些大型服务),因此导致服务器变卡



解决办法

1、如果你的机器真的在运行某些大型服务,而且就是你自己主动运行的:那就没办法了,就是其他服务占用导致机器变卡

2、如果不是,则可能是某些服务堆积过多(比如我的机器大概是因为 vscode 服务占用的内存资源太多了(平时会用 vscode 远程登录写代码))

若这些服务你认为可以关闭,则直接重启你的机器

打开你云服务器的官网,打开你的机器服务页面,找到重启键(下面是阿里云的重启键位置)



等待重启即可

二、手动开启一个 swap 分区:缓解服务器内存和 CPU 占用过高的问题

​ 手动开启一个 swap 分区可以暂时缓解服务器内存和 CPU 占用过高的问题。当物理内存(RAM)不足时,操作系统会使用 swap 分区作为虚拟内存,将不常用的数据移到磁盘上,从而释放 RAM 供更重要的进程使用。这可以有效防止系统因内存不足而崩溃或变得非常缓慢。

如何创建和启用 swap 分区

1. 检查现有 swap

首先,检查你的服务器是否已经有 swap 分区:

sh 复制代码
sudo swapon --show

如果输出为空,则表示没有启用 swap。

2. 创建 swap 文件

你可以通过创建一个 swap 文件来增加虚拟内存。以下是一个常见的做法:

  • 选择一个合适的大小:通常建议 swap 的大小为物理内存的 1-2 倍,但具体取决于你的需求和磁盘空间。例如,如果你有 4GB 的 RAM,可以创建一个 8GB 的 swap 文件。

  • 创建 swap 文件

    sh 复制代码
    sudo fallocate -l 8G /swapfile
  • 设置适当的权限

    sh 复制代码
    sudo chmod 600 /swapfile
  • 设置 swap 文件:把文件转换为swap文件

    sh 复制代码
    sudo mkswap /swapfile
  • 启用 swap 文件:激活swap文件,这里可以直接用命令挂载上一个swap分区,但是重启后要重新挂载

    sh 复制代码
    sudo swapon /swapfile
    
    如果不需要了,可以也可以卸载:
    卸载:sudo swapoff /swapfile
  • 验证 swap 是否已启用

    sh 复制代码
    sudo swapon --show

你应该看到新创建的 swap 文件已经启用。

以下是我给自己的系统开了 2G 的分区



3. 使 swap 永久生效

为了确保在系统重启后 swap 仍然有效,你需要将其添加到 /etc/fstab 文件中:

sh 复制代码
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
4. 调整 swappiness 参数

swappiness 参数控制内核使用 swap 的频率。默认值通常是 60,但这可能不适合所有情况。你可以根据需要调整这个值:

  • 临时调整

    sh 复制代码
    sudo sysctl vm.swappiness=10
  • 永久调整

    编辑 /etc/sysctl.conf 文件,添加或修改以下行:

    sh 复制代码
    vm.swappiness=10

较低的 swappiness 值(如 10)意味着内核会尽量避免使用 swap,只有在绝对必要时才会将数据移到 swap 中。较高的值(如 60 或更高)则会让内核更积极地使用 swap。

5. 监控 swap 使用情况

你可以使用以下命令监控 swap 的使用情况:

sh 复制代码
free -h

或者使用 tophtop 等工具查看实时的内存和 CPU 使用情况。

其他建议

虽然启用 swap 可以暂时缓解内存不足的问题,但它并不是长期解决方案。swap 是基于磁盘的,访问速度远低于物理内存,因此频繁使用 swap 会导致系统性能下降。为了更彻底地解决问题,建议你考虑以下措施:

  1. 优化应用程序
    • 检查哪些进程占用了大量的内存和 CPU,并尝试优化它们。
    • 关闭不必要的服务和进程,减少资源消耗。
  2. 增加物理内存
    • 如果可能的话,考虑升级服务器的物理内存(RAM)。这是最直接且有效的解决方法。
  3. 负载均衡
    • 如果你有多个服务器,可以考虑将负载分摊到不同的服务器上,避免单台服务器过载。

三、我的解决思路(非必要观看)

当你等待好一会后,发现 xshell 登录成功连接上服务器了,但是向这个打开的终端窗口输入命令,终端的反应变慢了,每一条命令都是迟迟才响应

此时我想到:服务器并不是不能登录,而是响应速度变慢了

于是打开服务器官网(我用的是阿里云的服务器)



发现我的机器 cpu占用到了 50% 以上 、硬盘IO 也到了一个较高的数值,说明该机器正在运行某些比较大的服务(如果你确实有用该服务器运行大型服务,则原因就是你的大型服务占用该机器的大部分性能,导致你的 vscodexshell 登录不上机器与终端响应变慢(破案了!))

但是我确定我没有运行大型服务,是不是中病毒了(但我也确定我没有乱下载什么东西)

最终大法:重启该服务器!

(世界真理:机器的 99%的问题都能通过重启解决)

打开你云服务器的官网,打开你的机器服务页面,找到重启键(下面是阿里云的重启键位置)



重启时,机器名称旁边的 "运行中" 会变成 "正在停止"等停止字样,等待一会

过几分钟若还是 "正在停止"等停止字样,此时刷新一下当前页面试试,不行继续等待,直到最后重启成功

重新使用 vscodexshell 登录远程机器,此时就成功了!

相关推荐
牛奔6 分钟前
Docker Compose 解决服务间 DNS 解析失败问题
运维·docker·容器
OpsEye12 分钟前
监控 100 问(三):监控告警触发后如何快速定位与解决问题
运维·网络·it运维·it·监控·监控系统
线束线缆组件品替网16 分钟前
Conxall 防水线缆在户外工控中的布线实践
运维·人工智能·汽车·电脑·材料工程·智能电视
HealthScience23 分钟前
常见的微调的方式有哪些?(Lora...)
vscode·python
济61734 分钟前
linux(第十四期)--官方 SDK 移植实验-- Ubuntu20.04
linux·运维·服务器
范纹杉想快点毕业36 分钟前
欧几里得算法与扩展欧几里得算法,C语言编程实现(零基础全解析)
运维·c语言·单片机·嵌入式硬件·算法
小猪佩奇TONY40 分钟前
Linux 内核学习(16) --- linux x86-64 虚拟地址空间和区域
linux·运维·学习
cngm1101 小时前
记录两个网卡同时访问两个网段的调试方法route print
服务器·网络·windows
杰克崔1 小时前
kprobe及kretprobe的基于例子来调试分析其原理
linux·运维·服务器·车载系统
小北方城市网1 小时前
微服务架构设计实战指南:从拆分到落地,构建高可用分布式系统
java·运维·数据库·分布式·python·微服务