情况描述:

朋友在阿里云上有一台系统为CentOS7的VPS,内存为2GB,用于平时开发自己的项目时测试使用;

他在上面运行了5个docker实例,运行java程序;还有一个mysql服务;

上述5个docker实例和mysql服务总共占用VPS1.35GB的内存,系统运行很慢。ssh连接输入命令都有卡顿;

因为内存太小,没什么可以优化的空间。所以准备启用swap交换空间。

百度了一下收到博客文章, 通过文章中提供的方式添加swap空间;但是遇到一个问题,该centos7系统中,不存在/dev/zero文件,所以找到另一篇博客文章.

具体步骤如下:

1. 误删/dev/zero文件的解决方法如下两条命令进行修复重建文件:

[root@localhost sslinux]# mknod /dev/zero c 1 5
[root@localhost sslinux]# chmod 666 /dev/zero

修复完成后用命令测试下是否可用,发现已经可以正常使用磁盘测试了

[root@localhost sq808sq]# dd if=/dev/zero of=test bs=64k count=4k oflag=dsync

至此,/dev/zero 文件的修复重建工作已经完成(该文件为系统特殊文件丢失后不能从系统盘或其他系统直接复制使用,只能通过重建修复,/dev/null文件也是如此)

2.使用dd 命令 新增 swap空间(/var/swap)

dd if=/dev/zero of=/var/swap bs=1024 count=4096000
ls -lh /var/swap
mkswap /var/swap
mkswap -f /var/swap
swapon /var/swap
free -lh
swapon /var/swap
more /proc/swaps
vim /etc/fstab
free -lh

将swap设置为开机自动挂载:

[root@izbp12z8w3jbbgmy9yiz92z ~]# tail -1 /etc/fstab
/var/swap swap swap defaults 0 0

但是此时使用 free -lh 命令查看memory和swap的使用情况,依旧没什么变化。

1.swap 是存储“暂时不需要使用的内存”到硬盘上,等到使用的时候再载入到内存中

这种情况只能说明,没有“长期不使用的内存”

2.Swap 的使用量和 OOM 没有直接关系。OOM 看的是申请量不是使用量。哪怕你内存没用完都会触发 OOM

memory和swap的关系

系统在什么情况下才会使用SWAP?

实际上,并不是等所有的物理内存都消耗完毕之后,才去使用swap的空间,什么时候使用是由swappiness 参数值控制。

[root@rhce ~]# cat /proc/sys/vm/swappiness
60

该值默认值是60.

swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,

swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。

即内存足够大的时候,swappiness设置尽量小; 内存较小的时候,swappiness要设置的尽量大;

如何修改swappiness参数?

  • 临时性修改:

    [root@rhce ~]# sysctl vm.swappiness=10
    vm.swappiness = 10 [root@rhce ~]# cat /proc/sys/vm/swappiness
    10
  • 永久修改:
    在/etc/sysctl.conf 文件里添加如下参数:

    vm.swappiness=10
    
    [root@izbp12z8w3jbbgmy9yiz92z ~]# sed -i '$a vm.swappiness=100' /etc/sysctl.conf
    [root@izbp12z8w3jbbgmy9yiz92z ~]# sysctl vm.swappiness
    vm.swappiness = 100

到这里,系统就会尽可能的使用swap。 可以执行一个占用大量内存的命令看一下效果;

此时再查看内存和swap的使用情况:

[root@izbp12z8w3jbbgmy9yiz92z ~]# free -lh
total used free shared buff/cache available
Mem: 1.8G 899M 690M 1.5M 249M 779M
Low: 1.8G 1.1G 690M
High: 0B 0B 0B
Swap: 3.9G 715M 3.2G

OK,问题解决了。

因为觉得以后可能会再次遇到这样的情况,所以简单记录一下;

centos7 未启用swap导致内存使用率过高。的更多相关文章

  1. 空循环导致CPU使用率很高

    业务背景 业务背景就是需要将多张业务表中的数据增量同步到一张大宽表中,后台系统基于这张大宽表开展业务,所以就开发了一个数据同步工具,由中间件采集binlog消息到kafka里,然后我去消费,实现增量同 ...

  2. Windows Server 2008 R2服务器内存使用率过高,但与任务管理器中进程占用内存和不一致

    系统环境: Windows Server 2008 R2 + Sql Server 2008 R2   问题描述: Windows Server 2008 R2系统内存占用率过大,而在任务管理器中各进 ...

  3. Windows Server 2008 R2 服务器内存使用率过高几乎耗光

    系统环境: Windows Server 2008 R2 Enterprise 搭建有 web服务器(iis) 和  文件服务   问题描述: Windows Server 2008 R2系统内存耗光 ...

  4. 性能分析(5)- 软中断导致 CPU 使用率过高的案例

    性能分析小案例系列,可以通过下面链接查看哦 https://www.cnblogs.com/poloyy/category/1814570.html 前言 软中断基本原理,可参考这篇博客:https: ...

  5. 解决mysqldb查询大量数据导致内存使用过高的问题

    1.源码 connection=MySQLdb.connect( host="thehost",user="theuser", passwd="the ...

  6. 【译】Asp.net core应用在 Kubernetes上内存使用率过高问题分析

    原文:https://blog.markvincze.com/troubleshooting-high-memory-usage-with-asp-net-core-on-kubernetes/ ps ...

  7. Oracle查询语句导致CPU使用率过高问题处理

    解决此问题的关键在于如何找到造成CPU使用率过高的SQL语句.步骤如下: 1.使用Process Explorer工具查看到Oracle进程,双击Oracle进程,在弹出的属性窗口的Threads选项 ...

  8. 代码死循环导致cpu使用率过高

    1. top命令查看进程pid  27081 2. ps -mp pid -o THREAD,tid,time  (tid:31128) 3.printf “%x\n” number  #将tid转换 ...

  9. Linux下php-fpm进程过多导致内存耗尽问题

    这篇文章主要介绍了解决Linux下php-fpm进程过多导致内存耗尽问题,需要的朋友可以参考下   最近,发现个人博客的Linux服务器,数据库服务经常挂掉,导致需要重启,才能正常访问,极其恶心,于是 ...

  10. 性能分析(1)- Java 进程导致 CPU 使用率升高,问题怎么定位?

    性能分析小案例系列,可以通过下面链接查看哦 ps:这些分析小案例不能保证百分比正确,是博主学习过程中的总结,仅做参考 前提 本机有一个很占用 CPU 的项目,放在了 Tomcat 下启动着 如何定位 ...

随机推荐

  1. Hibernate的基本查询语句

    1.最简单的查询 List<Special> specials = (List<Special>)session.createQuery("select spe fr ...

  2. Win7 远程 Ubuntu 桌面 mate desktop,并实现中文输入法

    一. 安装mate desktop: $sudo apt-add-repository ppa:ubuntu-mate-dev/ppa $sudo apt-add-repository ppa:ubu ...

  3. 导出EXCEL【Web方式HTML通过拼接html中table】

    DataTable dt= GetTaskList(int.MaxValue); StringBuilder table = new StringBuilder(); table.Append(&qu ...

  4. Python之路【第五篇】:面向对象及相关

    Python之路[第五篇]:面向对象及相关   面向对象基础 基础内容介绍详见一下两篇博文: 面向对象初级篇 面向对象进阶篇 其他相关 一.isinstance(obj, cls) 检查是否obj是否 ...

  5. .net core dump分析

    服务器上如果出现cpu内存饱满,找不到原因,那么dump文件分析必不可少. 起初是想在linux下调试.net core 的dump,但是环境一直无法安装 搞了许久没搞出来,其次文章太少了,googl ...

  6. 数据库建模&amp;逆向工程工具

    工具推荐先走一波: Navicat Premium:https://www.navicat.com.cn/products/navicat-premiumPremium  (个人推荐) Navicat ...

  7. O(n*logn)级别的算法之一(归并排序及其优化)

    原理: 设两个有序的子序列(相当于输入序列)放在同一序列中相邻的位置上:array[low..m],array[m + 1..high],先将它们合并到一个局部的暂存序列 temp (相当于输出序列) ...

  8. http与rfc

    超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的是为了提供一种发布和接 ...

  9. MySQL binlog 组提交与 XA(两阶段提交)--1

    参考了网上几篇比较靠谱的文章 http://www.linuxidc.com/Linux/2015-11/124942.htm http://blog.csdn.net/woqutechteam/ar ...

  10. (spfa) Highway Project (zoj 3946 )

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5718   Highway Project Time Limit: 2 Seco ...