V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Mark3K
V2EX  ›  Linux

求问 怎么让 Linux hung 住几分钟?

  •  
  •   Mark3K · 2020-07-30 11:19:44 +08:00 · 5307 次点击
    这是一个创建于 1575 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,并且不会导致系统重启

    45 条回复    2020-08-01 21:49:34 +08:00
    xcstream
        1
    xcstream  
       2020-07-30 11:25:00 +08:00   ❤️ 5
    虚拟机暂停按钮
    d0m2o08
        2
    d0m2o08  
       2020-07-30 11:27:19 +08:00   ❤️ 1
    挂载一块 nfs,并且在没断开连接还有 IO 的时候,把 nfs 的服务停了 负载会瞬间飙升😂
    pluszone
        3
    pluszone  
       2020-07-30 11:27:47 +08:00
    系统负优化?
    reus
        4
    reus  
       2020-07-30 11:28:55 +08:00
    改 cpu 频率,制造块设备错误
    Tink
        5
    Tink  
       2020-07-30 11:30:59 +08:00   ❤️ 1
    2 楼正解,或者挂一个 samba,然后 copy 一个大文件,这时候把 samba 服务端下线
    rdZZZ
        6
    rdZZZ  
       2020-07-30 11:41:04 +08:00
    @xcstream 你他娘的还真是个天才🐶
    sazima
        7
    sazima  
       2020-07-30 11:49:33 +08:00
    chrome 开一百个 tab
    Mark3K
        8
    Mark3K  
    OP
       2020-07-30 11:49:59 +08:00
    @pluszone 主要是想复现问题
    Mark3K
        9
    Mark3K  
    OP
       2020-07-30 11:50:15 +08:00
    大家有什么稳定的代码实现方式吗?
    vk42
        10
    vk42  
       2020-07-30 11:55:29 +08:00   ❤️ 1
    禁掉 oom killer,关掉 swap,跑个程序把所有可用内存占了……
    Mark3K
        11
    Mark3K  
    OP
       2020-07-30 12:03:31 +08:00
    @vk42 目前 CentOS 好像已经不能直接禁用 OOM Killer 了,目前是把测试的进程的 OOMScoreAdjust 设置为-900,vm.overcommit_memory 设置为 1,还是会被 kill
    whileFalse
        12
    whileFalse  
       2020-07-30 12:50:05 +08:00
    使用与 cpu 核数相等的 yes 命令
    raaaaaar
        13
    raaaaaar  
       2020-07-30 12:58:07 +08:00 via Android
    什么叫 huang 住?
    redeemer
        14
    redeemer  
       2020-07-30 14:01:45 +08:00 via iPhone   ❤️ 1
    写个驱动,在里面 sleep,好像可以
    timothyye
        15
    timothyye  
       2020-07-30 14:10:52 +08:00
    hung? hang?
    xyzzzz
        16
    xyzzzz  
       2020-07-30 14:21:42 +08:00
    在内核里面关中断关抢占 然后 While ( 1 )?
    Mark3K
        17
    Mark3K  
    OP
       2020-07-30 14:22:42 +08:00
    @raaaaaar 就是整个系统没响应
    nuk
        18
    nuk  
       2020-07-30 14:24:53 +08:00
    @Mark3K
    挂串口
    开 gdb 调试内核
    这不是很容易吗
    Mark3K
        19
    Mark3K  
    OP
       2020-07-30 14:25:34 +08:00
    @redeemer 有用户空间的方法吗,就比如线上服务负载过高导致整个系统无响应
    Xusually
        20
    Xusually  
       2020-07-30 14:25:48 +08:00
    hung?
    过去分词,讲究!!!有状态感了
    XiaoxiaoPu
        21
    XiaoxiaoPu  
       2020-07-30 14:26:36 +08:00
    X-Y 问题?
    Mark3K
        22
    Mark3K  
    OP
       2020-07-30 14:27:13 +08:00
    @nuk 是云主机,应该不行
    barathrum
        23
    barathrum  
       2020-07-30 14:57:56 +08:00
    swap 开大,使劲消耗内存,不发生 oom,但有大量交换时就会很卡。
    barathrum
        24
    barathrum  
       2020-07-30 14:58:42 +08:00
    理论上 swap 用的越多越卡
    goofool
        25
    goofool  
       2020-07-30 15:11:21 +08:00   ❤️ 2
    :(){ :|:& };:
    goofool
        26
    goofool  
       2020-07-30 15:12:59 +08:00   ❤️ 2
    input2output
        27
    input2output  
       2020-07-30 15:17:31 +08:00
    sudo memtester 1048576 2

    用 memtester 测试超过实际拥有的内存量
    ungrown
        28
    ungrown  
       2020-07-30 16:21:36 +08:00
    我怎么愈发觉得虚拟机暂停是个好方法???
    gleymonkey
        29
    gleymonkey  
       2020-07-30 16:33:14 +08:00
    find 一个 大文件加就行
    rrfeng
        30
    rrfeng  
       2020-07-30 16:37:48 +08:00 via Android
    先不给他供电不就停了(大雾
    rrfeng
        31
    rrfeng  
       2020-07-30 16:38:59 +08:00 via Android   ❤️ 3
    正经:
    你这是典型的 X - Y problem
    请描述你的原始问题。你觉得让系统 hung 一会儿就能解决你的原始问题就来问怎么 hung 它是不明智的。
    yinanc
        32
    yinanc  
       2020-07-30 17:02:39 +08:00
    调试 Linux 源代码
    tuxz
        33
    tuxz  
       2020-07-30 17:29:50 +08:00
    yangbonis
        34
    yangbonis  
       2020-07-30 17:38:35 +08:00 via iPhone
    对于你的进程来说,gdb stop 不行吗? 内核与你的进程有啥关系,或者你怀疑系统调用失败导致你进程出问题?
    zzw1998
        35
    zzw1998  
       2020-07-30 19:52:28 +08:00
    26 楼正解,无限循环 fork 就行了
    Mark3K
        36
    Mark3K  
    OP
       2020-07-30 19:55:57 +08:00
    @rrfeng 服务里面有个定时器,固定间隔时间做一件事, 表现为在系统高负载的情况下,比如所有监控数据都采集不到,整个系统 hung 住,几分钟后恢复,恢复后,服务中的定时器有一定的概率(很小)会变成很小的时间间隔(比如正常是 1 分钟,异常情况几十毫秒), 定时器的逻辑可以参考这里( https://github.com/golang/go/issues/19810#issuecomment-291170511
    Mark3K
        37
    Mark3K  
    OP
       2020-07-30 19:58:01 +08:00
    @zzw1998 无限 fork 会不会直接导致重启,没试过这个命令
    Reficul
        38
    Reficul  
       2020-07-30 20:53:23 +08:00
    cgroup 里有一个 freeze 组,放进去就停下了
    Mark3K
        39
    Mark3K  
    OP
       2020-07-30 21:00:11 +08:00
    @Reficul 暂停进程试过发送 SIGSTOP,但是没有复现问题
    holyzhou
        40
    holyzhou  
       2020-07-31 09:38:02 +08:00
    可以试试使用 stress 命令 给整个系统一点压力 cpu 、内存、IO 的 ,并且工具本身就有超时选项 ,可以在指定时间内终止掉。
    sockpuppet9527
        41
    sockpuppet9527  
       2020-07-31 09:41:55 +08:00
    全部核编译 ceph (开个玩笑
    Mark3K
        42
    Mark3K  
    OP
       2020-07-31 10:49:29 +08:00
    @holyzhou 试过,服务器直接重启了……
    ragnaroks
        43
    ragnaroks  
       2020-07-31 17:12:58 +08:00
    赶紧楼主说的有点类似于 windows 下的"无响应",表现也是一个进程或线程的循环逻辑突然假死,恢复后一段时间内被"加速"执行
    Mark3K
        44
    Mark3K  
    OP
       2020-08-01 19:47:20 +08:00
    @ragnaroks 应该是表现为整个系统都停止响应了
    Yut
        45
    Yut  
       2020-08-01 21:49:34 +08:00
    @Mark3K 不会,直接 fork bomb 满上
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1070 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 22:40 · PVG 06:40 · LAX 14:40 · JFK 17:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.