【环境配置】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
相关推荐
java_logo2 小时前
NGINX WEBUI Docker 容器化部署指南
运维·nginx·docker·容器·centos·rabbitmq·运维开发
SSL店小二2 小时前
IP SSL证书申请全过程及注意事项
服务器·网络·网络协议·https·ssl
q***46523 小时前
若依部署Nginx和Tomcat
运维·nginx·tomcat
行初心3 小时前
uos基础 dmesg 查看内核的实时日志
运维
行初心3 小时前
uos基础 journalctl 查看系统的实时日志
运维
行初心4 小时前
uos基础 ffmpeg 查看多媒体解码的配置信息
运维
路人甲ing..4 小时前
Ubuntu 怎么把树莓派内存卡备份制作成为镜像
linux·运维·ubuntu
QMY5205204 小时前
爬虫技术抓取网站数据的方法
运维·爬虫·自动化
zz-zjx4 小时前
docker进阶---docker底层实践2025
运维·docker·容器