Livid
288.16D
533.32D
V2EX  ›  DevOps

关于 Linux 服务器的 swap 用量,大家所在的运维团队都是如何监控和优化的呢?

  •  
  •   Livid ·
    PRO
    · Nov 27, 2014 · 11034 views
    This topic created in 4212 days ago, the information mentioned may be changed or developed.
    35 replies    2014-11-28 11:12:32 +08:00
    Sunyanzi
        1
    Sunyanzi  
       Nov 27, 2014   ❤️ 1
    SWAP 的用量应该恒为 0 ... 吃到就要报警了 ...
    EPr2hh6LADQWqRVH
        2
    EPr2hh6LADQWqRVH  
       Nov 27, 2014   ❤️ 1
    swap不是好东西,内存抖动还不如直接杀进程呢
    要内存不要swap
    hydrazt
        3
    hydrazt  
       Nov 27, 2014   ❤️ 1
    1. 加内存,加服务器
    2. 吃内存的服务修改配置
    halfbloodrock
        4
    halfbloodrock  
       Nov 27, 2014   ❤️ 4
    监控看用到一半就报警,同时监控下vmstat si so的数值

    优化swap本身倒是不多,基本上也就是跟着redhat的建议来。

    https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Performance_Tuning_Guide/s-memory-tunables.html
    hydrazt
        5
    hydrazt  
       Nov 27, 2014   ❤️ 1
    zabbix 默认监控项里面就有swap的使用量监控
    cloudzhou
        6
    cloudzhou  
       Nov 27, 2014   ❤️ 1
    基本上,现在已经不推荐使用 swap 了,容易导致系统抖动,尤其在现在有大内存支持下。
    zts1993
        7
    zts1993  
       Nov 27, 2014
    加内存
    kkxxxxxxx
        8
    kkxxxxxxx  
       Nov 27, 2014
    512M小内存,不用swap不行啊,内存又加不起
    efi
        9
    efi  
       Nov 27, 2014 via Android
    无swap,oom随机杀进程,过一会发现数据库被杀了
    halczy
        10
    halczy  
       Nov 27, 2014   ❤️ 1
    除了用来备份/存文件/DEV那些机子之外, 其他的都不会用到SWAP.
    ab
        11
    ab  
       Nov 27, 2014   ❤️ 1
    同意1,2楼. 每次swap一动,负载马上飞天
    9hills
        12
    9hills  
       Nov 27, 2014
    关掉SWAP,用inittab保证sshd不死

    然后做好内存监控,内存超了就OOM吧
    efi
        13
    efi  
       Nov 27, 2014 via Android   ❤️ 1
    调内核参数vm.swappiness。为了避免oom杀掉数据库,内核特别把=0的语义改成=1,颇有争论。
    5thcat
        14
    5thcat  
       Nov 27, 2014   ❤️ 1
    "因为一般来说宁愿应用OOM挂掉也不愿意导致rt飙高,使得应用hang在那里的。" 引用自
    http://blog.hesey.net/2014/05/swap-impact-on-rt-sensitive-apps.html
    kofj
        15
    kofj  
       Nov 27, 2014
    @avastms 赞同,还是加内存吧
    efi
        16
    efi  
       Nov 27, 2014 via Android
    杀掉数据库比简单的挂掉要糟得多,你宁愿数据库停止然后去优雅关闭也不愿简单的杀掉。

    swappiness已经可以起到绝大多数时候避免swap的作用,但是你还是需要swap来处理极端情况。一个折中办法是使用zswap减少io。
    efi
        17
    efi  
       Nov 27, 2014 via Android
    应用内部可以还调用madvise通知内核避免swap。简单的取消swap其实是丢弃了一道防护。
    efi
        18
    efi  
       Nov 27, 2014 via Android
    总而言之linux的内存管理系统显然是有这方面特性满足实时应用的内存需求的。
    xtaoyumo
        19
    xtaoyumo  
       Nov 27, 2014
    关闭 swap
    Lax
        20
    Lax  
       Nov 27, 2014
    1 禁用
    /etc/sysctl.conf: vm.swappiness=0

    2
    /etc/sysctl.conf: vm.swappiness=1
    监控swap使用量,超过30%就报警。
    监控swap in/out。发现有交换就报警。
    typcn
        21
    typcn  
       Nov 27, 2014 via iPad
    我服务器上有好多程序基本不会运行到的数据文件也加载到内存中,开了减轻压力,只开了512m sw
    bobopu
        22
    bobopu  
       Nov 27, 2014 via iPhone
    我现在swap已经达到内存的50%系统抖动十分厉害,打算升级内核后开zswap
    jackzou
        23
    jackzou  
       Nov 27, 2014
    调内核参数vm.swappiness
    监控swap的值,非零就报警
    wxm4ever
        24
    wxm4ever  
       Nov 27, 2014
    在阿里云上搭gitlab.我宁愿开1g swap也不愿意多花钱升级内存~~~ - -
    mahone3297
        25
    mahone3297  
       Nov 27, 2014
    @jackzou
    @Lax
    请教,如何查看swap使用量?free -m?如何监控?
    billwang
        26
    billwang  
       Nov 27, 2014   ❤️ 1
    华三网管系统,监控cup、内存、进程、weblogic、oracle、ping告警等等,告警后直接报缺陷工单,短信提醒。
    uniudy
        27
    uniudy  
       Nov 27, 2014 via iPad
    尽可能关掉swap,宁愿挂掉也不能响应慢
    xwsoul
        28
    xwsoul  
       Nov 27, 2014
    用上swap 服务器就离躺不远了 很可能被接下来的一波带走
    msg7086
        29
    msg7086  
       Nov 27, 2014 via iPhone
    完全不明白为什么一排人说不能用swap。

    完全关闭swap会导致最主要的两个问题

    1 系统不能更合理地使用内存
    2 限制了virt内存的使用量
    oyjj
        30
    oyjj  
       Nov 28, 2014
    修改mysql并发参数~减少内存报警吧~
    efi
        31
    efi  
       Nov 28, 2014
    说不能用swap的主要是因为一不了解linux内存管理,二管不住应用程序使用内存的嘴。如果内存足够完全可以在开启swap的情况下避免swapping。如果内存不够可以用cgroup管住那个狂用内存又不太重要的应用。
    Lax
        32
    Lax  
       Nov 28, 2014
    @mahone3297
    cat /proc/meminfo |grep -i ^Swap
    用ganglia/nagios/zabbix都行搜监控软件。


    @efi agree
    notnumb
        33
    notnumb  
       Nov 28, 2014
    @Lax vm.swappiness=0 正解
    系统哪里有瓶颈,或者程序需要优化下
    msg7086
        34
    msg7086  
       Nov 28, 2014
    有很多时候系统会把内存里暂时不用的程序swap出去,然后把物理内存空出来用在刀刃上。

    比如现在很多系统上跑了很多不必要或者经常不必要的服务,或者跑着那种几天才会跑一次数据的后台进程,这种东西如果使用了不少内存但是又不是经常激活的状态,把这些内存扔进swap然后把内存空出来做磁盘cache提高性能有什么不好。为什么要非常绝对地说一定不能用到swap呢?为什么要阻止系统把内存用在刀刃上呢?楼上各位大神能说说不?
    mengzhuo
        35
    mengzhuo  
       Nov 28, 2014
    @efi 真汉子!
    @notnumb 设成0很危险,最好还是自己监视pages free
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3253 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 114ms · UTC 13:31 · PVG 21:31 · LAX 06:31 · JFK 09:31
    ♥ Do have faith in what you're doing.