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

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

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

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

    只是桌面卡死的话,切到 tty 挂调试器看看,实在不行也可以定期重启桌面环境,比如我用的 sddm+kds ,每次就直接 sudo systemctl restart sddm 就完成所有桌面环境的重启了,也还挺方便的。
    ZeroAsh
        12
    ZeroAsh  
       247 天前
    @ZeroAsh sddm+kde
    zjsxwc
        13
    zjsxwc  
       247 天前
    还有个可能是硬盘容量太小,临时文件写满了磁盘,导致卡死
    hexler
        14
    hexler  
       247 天前
    宕机看 core ,没 core 看 kernel 日志。终极解决方案上服务器使 ipmi 。
    chutianyao
        15
    chutianyao  
       247 天前
    #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  
       247 天前
    @chutianyao 如果是磁盘 io 的问题, 通常 jbd2 进程会 100%,可以观察下
    s82kd92l
        17
    s82kd92l  
       246 天前
    可以把日志写到 ramoops 里,就算奔溃重启了也有一定概率能读到
    Nosub
        18
    Nosub  
       246 天前
    可以看看这篇文章,1 楼基本说的是对的,https://nosub.net/posts/p/100
    luozic
        19
    luozic  
       246 天前
    首先排查一下硬件:cpu 内存 硬盘问题。 之后就是排查缓存 系统是否中毒等问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5751 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 79ms · UTC 03:16 · PVG 11:16 · LAX 19:16 · JFK 22:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.