zoukankan      html  css  js  c++  java
  • Linux占用swap分区过高,物理内存还有剩余

    Linux占用swap分区过高,物理内存还有剩余

    问题分析

    Swap配置对性能的影响

    分配太多的Swap空间会浪费磁盘空间,而Swap空间太少,则系统会发生错误。如果系统的物理内存用光了,系统就会跑得很慢,但仍能运行;如果Swap空间用光了,那么系统就会发生错误。例如,Web服务器能根据不同的请求数量衍生出多个服务进程(或线程),如果Swap空间用完,则服务进程无法启动,通常会出现“application is out of memory”的错误,严重时会造成服务进程的死锁。因此Swap空间的分配是很重要的。
    通常情况下,Swap空间应大于或等于物理内存的大小,最小不应小于64M,通常Swap空间的大小应是物理内存的2-2.5倍。但根据不同的应用,应有不同的配置:如果是小的桌面系统,则只需要较小的Swap空间,而大的服务器系统则视情况不同需要不同大小的Swap空间。特别是数据库服务器和Web服务器,随着访问量的增加,对Swap空间的要求也会增加,一般来说对于4G 以下的物理内存,配置2倍的swap,4G 以上配置1倍。
    另外,Swap分区的数量对性能也有很大的影响。因为Swap交换的操作是磁盘IO的操作,如果有多个Swap交换区,Swap空间的分配会以轮流的方式操作于所有的Swap,这样会大大均衡IO的负载,加快Swap交换的速度。如果只有一个交换区,所有的交换操作会使交换区变得很忙,使系统大多数时间处于等待状态,效率很低。用性能监视工具就会发现,此时的CPU并不很忙,而系统却慢。这说明,瓶颈在IO上,依靠提高CPU的速度是解决不了问题的。

    故障现象

    问题解决

    1.关闭swap分区,在关闭swap分区的过程中是一个很漫长的过程。需要等待一段时间。

    # swapoff -a && swapon -a
    

    2.swap配置优化:

    swappiness参数 表示意义
    swappiness=0 最大限度使用物理内存,然后才是 swap空间
    swappiness=100 的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。
    swappiness=60 linux的基本默认设置为60

    一般默认值都是60 cat /proc/sys/vm/swappiness

    也就是说,你的内存在使用到100-60=40%的时候,就开始出现有交换分区的使用。大家知道,内存的速度会比磁盘快很多,这样子会加大系统io,同时造的成大量页的换进换出,严重影响系统的性能,所以我们在操作系统层面,要尽可能使用内存,对该参数进行调整。

    调整方法

    1.临时调整

    [root@st-computer04 ~]# sysctl vm.swappiness=0
    vm.swappiness = 0
    [root@st-computer04 ~]# cat /proc/sys/vm/swappiness
    0
    
    # 重启后会回到默认设置的
    

    2.永久调整

    [root@st-computer04 ~]# cat>>/etc/sysctl.conf<<EOF
    vm.swappiness=0
    EOF
    
    # 生效
    [root@st-computer04 ~]# sysctl -p
    vm.swappiness = 0
    
    # 表示最大限度的使用物理内存
    
  • 相关阅读:
    VCC、VDD、VEE等区别
    Matlab运行速度/效率受哪些因素影响?
    strtok/atoi/atof/atol函数用法 详解
    双色球随机生成
    万能指针void*学习
    空指针和 指向指针的指针
    指针运算
    快速编译c/cpp文件
    贪吃蛇(C)
    判断规定时间内有无输入
  • 原文地址:https://www.cnblogs.com/gshelldon/p/14703859.html
Copyright © 2011-2022 走看看