【环境配置】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
相关推荐
刘某的Cloud1 分钟前
全局禁用ipv6
linux·运维·网络·系统·ipv6
乾元4 分钟前
多厂商配置对齐器:AI 如何在 Cisco / Huawei / Juniper 间做语义映射
运维·开发语言·网络·人工智能·网络协议·华为·智能路由器
熊文豪4 分钟前
使用Python快速开发一个MCP服务器
服务器·开发语言·python·mcp
Jtti4 分钟前
高防ip和普通ip两者有何区别?
运维·网络协议·tcp/ip
herinspace4 分钟前
管家婆软件中如何运用商品副单位
运维·服务器·数据库·windows·电脑
Channing Lewis7 分钟前
zoho crm中如何记录下已删除的子表recordid
运维·服务器·oracle
倔强的石头10614 分钟前
openEuler 在云服务器环境下的系统性能评测与优化实践
运维·服务器·openeuler
阿巴~阿巴~19 分钟前
HTTP进化史:从0.9到3.0的技术跃迁
linux·服务器·网络·网络协议·http
列逍19 分钟前
Linux进程(一)
linux·运维·服务器
Fortune_yangyang21 分钟前
数据库基础
运维·网络·数据库·mysql