如何分析 Linux 死机原因以及解决方案? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
craftx
V2EX    Linux

如何分析 Linux 死机原因以及解决方案?

  •  
  •   craftx 2024-04-01 07:44:28 +08:00 3916 次点击
    这是一个创建于 560 天前的主题,其中的信息可能已经有所发展或是发生改变。
    包括内存耗尽、桌面环境卡死
    以前我总是通过 tty 来重启桌面或者杀死高耗进程,但现在都卡死时都无法切换 tty
    19 条回复    2024-04-02 17:52:42 +08:00
    mokiki
        1
    mokiki  
       2024-04-01 08:03:24 +08:00 via Android
    没 swap 的话搞个 swap 文件试试吧
    Ackvincent
        2
    Ackvincent  
       2024-04-01 09:36:26 +08:00
    内存耗尽可能产生 oom ,可以分析记录/proc/meminfo 中内存相关数值信息和指定进程 oom 的分数来提前预警。或者读取操作系统日志中关于 oom killed 的信息来分析 killed 的进程相关信息。
    june4
        3
    june4  
       2024-04-01 10:05:50 +08:00
    卡死用 REISUB 大法 99% 好使不用硬重启
    H0GDEm5h00U77d0s
        4
    H0GDEm5h00U77d0s  
       2024-04-01 10:14:08 +08:00
    讲真很神秘,有的机器卡死是硬件问题,无解的
    mephisto
        5
    mephisto  
       2024-04-01 10:37:26 +08:00 via iPad
    机器配置本身不差的话,一旦感觉稍微有点卡了,htop 看下,把作妖进程杀了就好.不能切换 tty 的那种卡,一年遇不到一次. 我现在用自己拼的桌面环境,很轻量很清爽.4 核心 16G 内存的都很久没体验过卡的感觉
    aloxaf
        6
    aloxaf  
       2024-04-01 11:00:11 +08:00
    分析原因:重启后查看重启前的日志,不过有些硬件故障导致的卡死真的是无征兆的,看日志是完全正常的,系统突然就在某个点完全冻结了

    解决方案:SysRq
    luoyide2010
        7
    luoyide2010  
       2024-04-01 13:51:55 +08:00
    以前试过用组装机安装 centos8 ,可能搬运的时候导致内存接触不良了,只要轻微震动就死机,死机时屏幕会报错显示交换分区损坏之类的报错(记不太清楚了),但重启后看日志却没用任何记录,很神奇
    idontnowhat2say
        8
    idontnowhat2say  
       2024-04-01 15:01:55 +08:00
    没有 debug 过这种情况。但我的思路是,先装个监控吧,先收集下 cpu, mem, disk io 的数据,然后看能不能复现死机,然后看监控数据有没有异常的,再去查对应的指标相关的日志。
    xwwsxp
        9
    xwwsxp  
       2024-04-01 15:12:59 +08:00
    为啥用桌面,隔壁家的微软做了这么多年桌面,还不是 bug 满天飞,这还是商业闭源软件; Linux 上的桌面,都是雷锋在开源,和微软没法比,要用 Linux 桌面,也请购买 Mac 。
    在 Linux 上,命令行是主流吧;云计算大行其道的今天,直接买个云服务器不也蛮好的,定时备份,遇到问题直接回滚。
    libook
        10
    libook  
       2024-04-01 15:24:06 +08:00
    只要不是启动就卡死,可以重启看日志
    ZeroAsh
        11
    ZeroAsh  
       2024-04-01 15:42:19 +08:00
    已经死机了的话也只能看看 journalctl --list-boots 了吧,然后拿 boot id 去看上次的日志,再想下死机之前搞了什么,还没死机的时不时看看 iostat 啥的。

    只是桌面卡死的话,切到 tty 挂调试器看看,实在不行也可以定期重启桌面环境,比如我用的 sddm+kds ,每次就直接 sudo systemctl restart sddm 就完成所有桌面环境的重启了,也还挺方便的。
    ZeroAsh
        12
    ZeroAsh  
       2024-04-01 15:42:49 +08:00
    @ZeroAsh sddm+kde
    zjsxwc
        13
    zjsxwc  
       2024-04-01 17:15:34 +08:00
    还有个可能是硬盘容量太小,临时文件写满了磁盘,导致卡死
    hexler
        14
    hexler  
       2024-04-01 19:00:37 +08:00
    宕机看 core ,没 core 看 kernel 日志。终极解决方案上服务器使 ipmi 。
    chutianyao
        15
    chutianyao  
       2024-04-01 19:42:31 +08:00
    #sar -b -d -p -u -q ALL 10 >sar.txt &
    #sudo atop -Dldc >atop.txt &
    #top -d 10 -b >top.txt &

    每隔 10s 抓取系统进程、io 信息保存下来, 卡死重启后,分析这些文件,看看是啥进程导致的.

    我之前遇到的是大量磁盘 io, hdd 硬盘速度太慢导致系统卡死,后面加内存、启用 swap 分区解决的
    chutianyao
        16
    chutianyao  
       2024-04-01 19:43:28 +08:00
    @chutianyao 如果是磁盘 io 的问题, 通常 jbd2 进程会 100%,可以观察下
    s82kd92l
        17
    s82kd92l  
       2024-04-02 12:07:16 +08:00
    可以把日志写到 ramoops 里,就算奔溃重启了也有一定概率能读到
    Nosub
        18
    Nosub  
       2024-04-02 15:05:34 +08:00
    可以看看这篇文章,1 楼基本说的是对的,https://nosub.net/posts/p/100
    luozic
        19
    luozic  
       2024-04-02 17:52:42 +08:00
    首先排查一下硬件:cpu 内存 硬盘问题。 之后就是排查缓存 系统是否中毒等问题
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3083 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 44ms UTC 00:35 PVG 08:35 LAX 17:35 JFK 20:35
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86