【环境配置】vscode远程连接云服务器死机问题

文章目录

死机原因

首要原因就是内存打满,vscode-server占比很大

交换区介绍

是什么

交换区(Swap Space)是Linux系统中的一种存储区域,主要用于当物理内存(RAM)不足时,将部分不活跃的内存数据临时转移到磁盘上,从而释放物理内存供其他程序使用。

作用
  • 缓解内存不足:当物理内存被程序占满时,系统会把暂时不用的内存数据移到交换区,避免程序因内存不足而崩溃。
  • 支持休眠功能:系统休眠时,会将内存中的所有数据写入交换区,唤醒时再从交换区恢复,以此实现休眠状态的保存与恢复。
类比理解

可以把物理内存想象成"桌面",交换区就是"抽屉"。当桌面放不下东西时,就把暂时不用的物品放到抽屉里,需要时再拿出来,以此扩展"可用空间"。

原理

交换区的工作原理主要围绕内存页的换入(Swapping In)和换出(Swapping Out) 机制展开,具体过程如下:

1. 内存页的换出(当物理内存不足时)
  • 系统会识别出不活跃的内存页(即长时间未被程序访问的数据块,Linux以"页"为内存管理单位,通常一页为4KB)。
  • 把这些不活跃的内存页从物理内存中"转移"到交换区(磁盘空间),从而释放物理内存,供当前活跃的程序使用。
2. 内存页的换入(当程序需要访问被换出的内存时)
  • 若程序需要访问之前被换出到交换区的内存页,系统会先在物理内存中找一块空闲区域。
  • 然后将交换区中对应的内存页"读回"物理内存,程序即可继续访问该数据。
补充说明
  • 系统会通过算法智能判断哪些内存页该换出,例如基于"最近最少使用(LRU)"原则,优先换出长时间未被访问的内存页。
  • 交换区的性能远低于物理内存(磁盘速度比内存慢很多),因此过度依赖交换区会导致系统响应变慢,即出现"交换颠簸(Swap Thrashing)"。

开启交换区

  1. 创建一个用作交换空间的文件
bash 复制代码
sudo fallocate -l 8G /swapfile
# 或者
# bs=1M表示1兆,count=2048表示2048兆=2G
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
  1. 设置文件的权限
    交换文件应该具有合适的权限以供系统使用
bash 复制代码
sudo chmod 600 /swapfile
  1. 将文件格式化为交换空间
bash 复制代码
sudo mkswap /swapfile
  1. 启用交换空间
bash 复制代码
sudo swapon /swapfile
  1. 设置交换空间的启动顺序
    为了在系统重启后自动启用交换空间,需要将交换文件的信息添加到/etc/fstab文件中
bash 复制代码
sudo echo '/swapfile none swap sw 0 0' >> /etc/fstab
  1. 查看虚存情况。
bash 复制代码
free -h

修改交换阈值

交换阈值是什么

系统通过swappiness参数控制交换区的使用倾向,默认值通常为 0-60(不同发行版略有差异)。

swappiness数值越低,系统越倾向于使用物理内存;数值越高,越容易使用交换区。默认值下,只有当物理内存的 "空闲内存 + 可回收内存" 不足时,才会开始使用交换区。

查看交换阈值

可以使用以下两种方法查看当前系统的swappiness值:

  • 使用cat命令 :通过cat命令直接读取/proc/sys/vm/swappiness文件的内容,该文件存储了当前系统的swappiness值。
  • 使用sysctl命令 :使用sysctl命令也可以查看swappiness值,在终端中输入sysctl vm.swappiness,按下回车键。

修改交换阈值

swappiness可以修改,且支持临时生效永久生效两种方式,核心是通过调整参数值改变系统使用交换区的倾向。

一、修改方法
1. 临时修改(重启后失效)
  • 执行命令直接调整数值(以改为10为例,数值范围0-100):

    bash 复制代码
    sudo sysctl vm.swappiness=10
  • 作用:立即生效,适合临时测试不同参数的效果。

2. 永久修改(重启后仍有效)
  • 编辑系统配置文件/etc/sysctl.conf

    bash 复制代码
    sudo nano /etc/sysctl.conf
  • 在文件末尾添加或修改以下行(数值根据需求调整):

    bash 复制代码
    vm.swappiness=10
  • 保存文件后,执行命令使配置生效:

    bash 复制代码
    sudo sysctl -p
二、参数值的含义
  • 数值范围:0-100,数值越高,系统越倾向于使用交换区。
    • 0:尽可能不使用交换区,仅在物理内存完全耗尽时才触发交换。
    • 10-30:适合内存较大的系统,减少交换区使用,提升性能。
    • 60:默认值(多数发行版),平衡物理内存和交换区使用。
    • 80-100:倾向于频繁使用交换区,适合内存较小的系统。
三、注意事项
  • 调整后无需重启系统,永久修改执行sysctl -p即可生效。
  • 建议根据内存大小调整:内存≥8GB时,可设为10-20;内存≤4GB时,可设为40-60。
  • 若需恢复默认值,只需将vm.swappiness改回对应发行版的默认数值(如Ubuntu默认60),或删除配置文件中的对应行后执行sysctl -p
相关推荐
最贪吃的虎1 小时前
Git: rebase vs merge
java·运维·git·后端·mysql
yBmZlQzJ1 小时前
内网穿透工具通过端口转发实现内外网通信
运维·经验分享·docker·容器·1024程序员节
DeepHacking1 小时前
Overleaf 本地Docker部署
运维·docker·容器
llilian_162 小时前
总线授时卡 CPCI总线授时卡的工作原理及应用场景介绍 CPCI总线校时卡
运维·单片机·其他·自动化
乐迪信息2 小时前
乐迪信息:煤矿皮带区域安全管控:人员违规闯入智能识别
大数据·运维·人工智能·物联网·安全
好好生活_2 小时前
【Docker基础学习】从VM虚拟机到Docker
运维·docker
I · T · LUCKYBOOM3 小时前
30.Firewalld-Linux
linux·运维·安全
沙滩小绵羊3 小时前
Linux常见命令
linux·运维·服务器
iru4 小时前
nginx被报CVE-2025-1695漏洞,检查后反馈是误报
运维·nginx
誰能久伴不乏4 小时前
epoll 学习踩坑:`fcntl` 设置非阻塞到底用 `F_SETFL` 还是 `F_SETFD`?
linux·服务器·网络·c++·tcp/ip