打开 xshell ssh
登录远程服务器:卡在下面这里,迟迟不继续
当 SSH 连接卡在 Connection established.
之后,但没有显示远程终端提示符时,这通常意味着连接已经成功建立,说明不是网络连接和服务器连接问题,可能就是服务器自己的问题了
一、直接的解决办法(重点)
查明原因
打开服务器官网(我用的是阿里云的服务器),查看你的服务器的相关运行信息
如果发现你的机器如下图一样,CPU占用和硬盘IO的数据有点不对劲(有点高了),这表示当前你的机器被大量服务使用着(可能是运行着某些大型服务),因此导致服务器变卡
解决办法
1、如果你的机器真的在运行某些大型服务,而且就是你自己主动运行的:那就没办法了,就是其他服务占用导致机器变卡
2、如果不是,则可能是某些服务堆积过多(比如我的机器大概是因为 vscode
服务占用的内存资源太多了(平时会用 vscode
远程登录写代码))
若这些服务你认为可以关闭,则直接重启你的机器
打开你云服务器的官网,打开你的机器服务页面,找到重启键(下面是阿里云的重启键位置)
等待重启即可
二、手动开启一个 swap 分区:缓解服务器内存和 CPU 占用过高的问题
手动开启一个 swap 分区可以暂时缓解服务器内存和 CPU 占用过高的问题。当物理内存(RAM)不足时,操作系统会使用 swap 分区作为虚拟内存,将不常用的数据移到磁盘上,从而释放 RAM 供更重要的进程使用。这可以有效防止系统因内存不足而崩溃或变得非常缓慢。
如何创建和启用 swap 分区
1. 检查现有 swap
首先,检查你的服务器是否已经有 swap 分区:
sudo swapon --show
如果输出为空,则表示没有启用 swap。
2. 创建 swap 文件
你可以通过创建一个 swap 文件来增加虚拟内存。以下是一个常见的做法:
-
选择一个合适的大小:通常建议 swap 的大小为物理内存的 1-2 倍,但具体取决于你的需求和磁盘空间。例如,如果你有 4GB 的 RAM,可以创建一个 8GB 的 swap 文件。
-
创建 swap 文件:
sudo fallocate -l 8G /swapfile
-
设置适当的权限:
sudo chmod 600 /swapfile
-
设置 swap 文件:把文件转换为swap文件
sudo mkswap /swapfile
-
启用 swap 文件:激活swap文件,这里可以直接用命令挂载上一个swap分区,但是重启后要重新挂载
sudo swapon /swapfile 如果不需要了,可以也可以卸载: 卸载:sudo swapoff /swapfile
-
验证 swap 是否已启用:
sudo swapon --show
你应该看到新创建的 swap 文件已经启用。
以下是我给自己的系统开了 2G 的分区
3. 使 swap 永久生效
为了确保在系统重启后 swap 仍然有效,你需要将其添加到 /etc/fstab
文件中:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
4. 调整 swappiness 参数
swappiness
参数控制内核使用 swap 的频率。默认值通常是 60,但这可能不适合所有情况。你可以根据需要调整这个值:
-
临时调整:
sudo sysctl vm.swappiness=10
-
永久调整:
编辑/etc/sysctl.conf
文件,添加或修改以下行:vm.swappiness=10
较低的 swappiness
值(如 10)意味着内核会尽量避免使用 swap,只有在绝对必要时才会将数据移到 swap 中。较高的值(如 60 或更高)则会让内核更积极地使用 swap。
5. 监控 swap 使用情况
你可以使用以下命令监控 swap 的使用情况:
free -h
或者使用 top
、htop
等工具查看实时的内存和 CPU 使用情况。
其他建议
虽然启用 swap 可以暂时缓解内存不足的问题,但它并不是长期解决方案。swap 是基于磁盘的,访问速度远低于物理内存,因此频繁使用 swap 会导致系统性能下降。为了更彻底地解决问题,建议你考虑以下措施:
- 优化应用程序:
- 检查哪些进程占用了大量的内存和 CPU,并尝试优化它们。
- 关闭不必要的服务和进程,减少资源消耗。
- 增加物理内存:
- 如果可能的话,考虑升级服务器的物理内存(RAM)。这是最直接且有效的解决方法。
- 负载均衡:
- 如果你有多个服务器,可以考虑将负载分摊到不同的服务器上,避免单台服务器过载。
三、我的解决思路(非必要观看)
当你等待好一会后,发现 xshell
登录成功连接上服务器了,但是向这个打开的终端窗口输入命令,终端的反应变慢了,每一条命令都是迟迟才响应
此时我想到:服务器并不是不能登录,而是响应速度变慢了
于是打开服务器官网(我用的是阿里云的服务器)
发现我的机器 cpu占用到了 50% 以上 、硬盘IO 也到了一个较高的数值,说明该机器正在运行某些比较大的服务(如果你确实有用该服务器运行大型服务,则原因就是你的大型服务占用该机器的大部分性能,导致你的 vscode
或 xshell
登录不上机器与终端响应变慢(破案了!))
但是我确定我没有运行大型服务,是不是中病毒了(但我也确定我没有乱下载什么东西)
最终大法:重启该服务器!
(世界真理:机器的 99%的问题都能通过重启解决)
打开你云服务器的官网,打开你的机器服务页面,找到重启键(下面是阿里云的重启键位置)
重启时,机器名称旁边的 “运行中” 会变成 “正在停止”等停止字样,等待一会
过几分钟若还是 “正在停止”等停止字样,此时刷新一下当前页面试试,不行继续等待,直到最后重启成功
重新使用 vscode
和 xshell
登录远程机器,此时就成功了!