Linux中swap几乎耗尽,但物理内存还有空余的现象

news2024/12/24 8:11:41

故障现象:

产生此现象的原因:
swappiness 配额设置了偏高的值。
还有一个潜在的因素是某个程序因其自身对内存管理的缺陷,形成了zombie进程、且为及时关闭的处理任务还在持续消耗Mem及swap。
解决办法:
调低swappiness 配额值,或者直接将swappiness 配额设定为0 。

查看当前OS中的swappiness配额
cat /proc/sys/vm/swappiness

设定当前OS中的swappiness配额值

临时设定:sysctl vm.swappiness=10

永久设定:
tee -a /etc/sysctl.conf <<-’EOF’
# Configure the maximum number of shared memory segments
#kernel.shmall = 4294967296
vm.swappiness=10
EOF

sysctl -p

扩展知识:
Linux在内存被用完之前开始交换。这是为了提高性能和响应能力:性能提高是因为一些内存放磁盘缓存比方内存更合适。因此,最好将一个已经停用了一段时间的程序交换出去,而将经常使用的文件保存在缓存中。当系统处于空闲状态时、而不是当内存满时,一些程序正在运行并请求更多的RAM来完成任务时,响应能力会得到改善。
不建议关闭交换分区。的确,使用交换时,服务器性能会降低,但至少它是可操作的和可访问的。如果服务器需要更多的内存、但没有获得足额的内存,服务器将崩溃。因此有一个交换分区时(在某种程度上)可以避免这种情况的发生。
swappiness是Linux内核参数,作用在于控制换出运行时内存的相对权重。swappiness参数值可设置范围在0到100之间,较低参数值会让内核充分使用武力Mem。Linux的默认设置为60,当物理Mem使用到100-60=40%的时候,就开始使用交换分区。swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时地搬运到swap空间里面。
如果物理Mem用光了,系统就会跑得很慢,但仍能运行;如果Swap空间用光了,那么系统就会发生错误、程序进程将无法启动,通常会出现“application is out of memory”的错误,严重时会造成服务进程的死锁。
通常情况下,swap应大于或等于物理内存的大小,最小不应小于64M,通常swap空间的大小应是物理内存的2-2.5倍。但根据不同的应用,应有不同的配置:如果是小的桌面系统,则只需要较小的swap空间,而复杂的业务系统服务器则视情况不同需要不同大小的swap空间。特别是数据库服务器和Web服务器,随着访问量的增加,对Swap空间的要求也会增加,一般来说对于4G 以下的物理内存,配置2倍的swap,4G 以上配置1倍。
另外,swap分区的数量对Linux及其上的程序进程运行性能也有很大的影响。因为swap交换是磁盘IO的操作,如果有多个swap交换区,swap空间的分配会以轮询的方式操作于所有的swap,这样会大大均衡IO的负载,也会加快swap交换的速度。如果只有一个交换区,所有的交换操作会使交换区变得很忙,使系统大多数时间处于等待状态,效率很低。此时的CPU并不很忙,而系统却慢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1015679.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库连接工具Chat2DB介绍

1、Chat2DB介绍 Chat2DB 是一款有开源免费的多数据库客户端工具&#xff0c;支持windows、mac本地安装&#xff0c;也支持服务器端部署&#xff0c;web网页访问。和传统的数据库客户端软件Navicat、DBeaver 相比Chat2DB集成了AIGC的能力&#xff0c;能够将自然语言转换为SQL&a…

阿里云 服务器配置端口号阿里云网页开放的一个新端口后,重启防火墙,端口未启动

问题&#xff1a; 阿里云网页开放的一个新端口后&#xff0c;重启防火墙&#xff0c;端口未启动&#xff0c;之前配置的也都停止了。 解决&#xff1a; 原因可能是阿里的服务控制了&#xff0c;只能一个个端口开启了。把新配置新端口也单独启用。 开启80端口指令 firewall-cm…

【AIGC】Stable Diffusion Prompt 每日一练0916

一、前言 1.1 写在前面 本文是一个系列&#xff0c;有点类似随笔&#xff0c;每天一次更新&#xff0c;重点就Stable Diffusion Prompt进行专项训练&#xff0c;本文是第022篇《Stable Diffusion Prompt 每日一练0916》。上一篇《Stable Diffusion Prompt 每日一练0915》 1.…

查询linux系统中的cup和内存占用率?如何能够降低程序的cpu或者内存的占用率?

查询linux系统中的cup和内存占用率?如果查到具体是哪一个进程的cup占用率比较多&#xff0c;你会怎么做&#xff1f;如何能够降低程序的cpu或者内存的占用率? 要查询Linux系统中的CPU和内存占用率&#xff0c;您可以使用top命令&#xff0c;它可以显示系统的总体运行状态和每…

怒刷LeetCode的第1天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一&#xff1a;暴力枚举 方法二&#xff1a;哈希表 第二题 题目来源 题目内容 解决方法 方法一&#xff1a;动态规划 第三题 题目来源 题目内容 解决方法 方法一&#xff1a;模拟 第一题 题目来源 两数之和 - 力…

【python爬虫—星巴克产品】

文章目录 需求爬取星巴克产品以及图片&#xff0c;星巴克菜单 python爬虫爬取结果 需求 爬取星巴克产品以及图片&#xff0c;星巴克菜单 网页分析&#xff1a; 首先&#xff0c;需要分析星巴克官方网站的结构&#xff0c;了解菜单栏的位置、布局以及菜单项的标签或类名等信息…

开源AI家庭自动化助手-手机控制家庭智能家居服务

产品简介 将本地控制和隐私放在首位的开源家庭自动化。由全球开发者和 DIY 爱好者社区提供支持。非常适合在 Raspberry Pi 或本地服务器上运行。 功能介绍 1. 控制面板在控制面板&#xff0c;你可以查看家庭的灯光&#xff0c;温度&#xff0c;门铃&#xff0c;音响&#xf…

激光切割机加工过程中产生毛刺的原因及解决方案

激光切割设备在进行工件加工时产生了大量的工件毛刺。很多人认为是设备质量问题&#xff0c;然而事实并非如此。 毛刺是指在金属制品加工过程中遗留在金属表面的超量残渣颗粒。加工的工件出现毛刺&#xff0c;那么即被认为是次品。 当使用激光切割设备加工工件时&#xff0c;如…

第一类曲面积分:曲面微元dσ与其投影面积微元dxdy之间的关系推导

第一类曲面积分&#xff1a;曲面微元dσ与其投影面积微元dxdy之间的关系推导 本篇博客精简自本人关于曲面积分的博客&#xff1a;详情见&#xff1a;曲面积分(Surface Integral) 曲面参数化&#xff08;曲面上的每个点都使用起点为原点、终点为该曲面上的点的向量表示&#x…

介绍Spring Security框架,以及如何使用它实现应用程序的安全性

文章目录 什么是 Spring Security&#xff1f;Spring Security 的工作原理如何使用 Spring Security 构建安全的应用程序步骤 1&#xff1a;添加 Spring Security 依赖步骤 2&#xff1a;配置 Spring Security步骤 3&#xff1a;配置安全性规则步骤 4&#xff1a;创建用户和角色…

解决mybatis-plus不能俩表联查分页之手动写分页

public class MyPageHelper {// 调用pageInfo插件内的方法 开启分页 需要传入一个起始页的值和每页显示的条数public static void startPage(PageRequest pageRequest) {PageHelper.startPage(pageRequest.getPageNum(),pageRequest.getPageSize());}// 封装结果集public stati…

从零开始的PICO开发教程(4)-- VR世界 射线传送、旋转和移动

从零开始的PICO开发教程&#xff08;4&#xff09;-- VR世界 射线传送、旋转和移动 文章目录 从零开始的PICO开发教程&#xff08;4&#xff09;-- VR世界 射线传送、旋转和移动一、前言1、大纲 二、VR射线移动功能实现与解析1、区域传送&#xff08;1&#xff09;新建 XR Orig…

linux下使用crontab定时器,并且设置定时不执行的情况,附:项目启动遇到的一些问题和命令

打开终端&#xff0c;以root用户身份登录。 运行以下命令打开cron任务编辑器&#xff1a; crontab -e 如果首次编辑cron任务&#xff0c;会提示选择编辑器。选择你熟悉的编辑器&#xff0c;比如nano或vi&#xff0c;并打开相应的配置文件。 在编辑器中&#xff0c;添加一行类…

SpringMVC工程之非web部分代码复用,并独立运行

文章目录 概述一、独立运行前提二、实现步骤1. WebApplicationContext上下文配置文件定义2.servletContext上下文配置文件3. 定义独立运行的类main方法4. 开发环境运行main结果5. class文件运行6. jar运行&#xff08;推荐&#xff09; 概述 springMVC是位于spring web端的一个…

BeanFactory和ApplicationContext功能

IDEA中双击shift&#xff0c;搜索一切 使用ctrl f12打开当前文件的结构图&#xff0c;显示了当前文件的层次结构&#xff0c;包括类、方法、变量等。 BeanFactory接口功能 表面上只有getBean实际上IOC、DI、以及Bean的生命周期的各种功能&#xff0c;都有其实现类&#xff08…

视频讲解|1033含sop的配电网重构(含风光可多时段拓展)

目录 1 主要内容 程序特点 讲解重点 2 视频链接 1 主要内容 该视频为含sop的配电网重构matlab代码讲解&#xff0c;对应资源下载链接为含sop的配电网重构&#xff08;含风光|可多时段拓展&#xff09;&#xff0c;程序主要内容是&#xff1a;针对含sop的配电网重构模型&…

【AI】推理引擎的模型转换模块

在推理引擎架构中&#xff0c;API 接口下来就是模型转换&#xff0c;狭义的模型转换是指将各种框架的模型转换为统一的格式&#xff0c;即模型格式转换&#xff1b;广义的模型转换则还包括图优化部分&#xff0c;因为不同的框架提供的算子不同&#xff0c;且类型太多&#xff0…

强大的 HTTP 请求工具:axios 打造前后端通信利器 | 开源日报 0916

axios/axios Stars: 101.2k License: MIT axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;适用于浏览器和 node.js。 它具有以下核心优势&#xff1a; 支持在浏览器中进行 XMLHttpRequest在 node.js 中发起 http 请求支持 Promise API拦截请求和响应&#xff0c;并对数…

rust String 和 str 区别

1 String / &String String 类型的变量本质是一个存放在栈上的胖指针&#xff08;当然调用过程中&#xff0c;不用显示地按指针那样处理&#xff09;&#xff0c;共有三个字段&#xff1a; 1 pointer: 指向实际字符串值的地址&#xff0c;值是存放在堆上可变字节缓冲区&a…

驱动开发,stm32mp157a开发板的led灯控制实验(优化),使用ioctl函数,让write/read函数的专注读写功能

1.实验目的 编写LED灯的驱动&#xff0c;在应用程序中编写控制LED灯亮灭的代码逻辑实现LED灯功能的控制&#xff1b; 2.LED灯相关寄存器分析 LED1->PE10 LED1亮灭&#xff1a; RCC寄存器[4]->1 0X50000A28 GPIOE_MODER[21:20]->01 (输出) 0X50006000 GPIOE_ODR[10]-&g…