V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Livid
V2EX  ›  DevOps

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

  •  
  •   Livid · 2014-11-27 16:29:38 +08:00 · 10180 次点击
    这是一个创建于 3679 天前的主题,其中的信息可能已经有所发展或是发生改变。
    35 条回复    2014-11-28 11:12:32 +08:00
    Sunyanzi
        1
    Sunyanzi  
       2014-11-27 16:39:52 +08:00   ❤️ 1
    SWAP 的用量应该恒为 0 ... 吃到就要报警了 ...
    EPr2hh6LADQWqRVH
        2
    EPr2hh6LADQWqRVH  
       2014-11-27 16:40:25 +08:00   ❤️ 1
    swap不是好东西,内存抖动还不如直接杀进程呢
    要内存不要swap
    hydrazt
        3
    hydrazt  
       2014-11-27 16:45:46 +08:00   ❤️ 1
    1. 加内存,加服务器
    2. 吃内存的服务修改配置
    halfbloodrock
        4
    halfbloodrock  
       2014-11-27 16:49:26 +08:00   ❤️ 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  
       2014-11-27 16:49:46 +08:00   ❤️ 1
    zabbix 默认监控项里面就有swap的使用量监控
    cloudzhou
        6
    cloudzhou  
       2014-11-27 17:02:57 +08:00   ❤️ 1
    基本上,现在已经不推荐使用 swap 了,容易导致系统抖动,尤其在现在有大内存支持下。
    zts1993
        7
    zts1993  
       2014-11-27 17:03:36 +08:00
    加内存
    kkxxxxxxx
        8
    kkxxxxxxx  
       2014-11-27 17:32:34 +08:00
    512M小内存,不用swap不行啊,内存又加不起
    efi
        9
    efi  
       2014-11-27 17:48:38 +08:00 via Android
    无swap,oom随机杀进程,过一会发现数据库被杀了
    halczy
        10
    halczy  
       2014-11-27 17:53:04 +08:00   ❤️ 1
    除了用来备份/存文件/DEV那些机子之外, 其他的都不会用到SWAP.
    ab
        11
    ab  
       2014-11-27 17:54:46 +08:00   ❤️ 1
    同意1,2楼. 每次swap一动,负载马上飞天
    9hills
        12
    9hills  
       2014-11-27 17:56:49 +08:00
    关掉SWAP,用inittab保证sshd不死

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

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

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

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

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


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

    比如现在很多系统上跑了很多不必要或者经常不必要的服务,或者跑着那种几天才会跑一次数据的后台进程,这种东西如果使用了不少内存但是又不是经常激活的状态,把这些内存扔进swap然后把内存空出来做磁盘cache提高性能有什么不好。为什么要非常绝对地说一定不能用到swap呢?为什么要阻止系统把内存用在刀刃上呢?楼上各位大神能说说不?
    mengzhuo
        35
    mengzhuo  
       2014-11-28 11:12:32 +08:00
    @efi 真汉子!
    @notnumb 设成0很危险,最好还是自己监视pages free
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4059 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:01 · PVG 09:01 · LAX 17:01 · JFK 20:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.