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

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

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

只是桌面卡死的话,切到 tty 挂调试器看看,实在不行也可以定期重启桌面环境,比如我用的 sddm+kds ,每次就直接 sudo systemctl restart sddm 就完成所有桌面环境的重启了,也还挺方便的。
ZeroAsh
45 天前
@ZeroAsh sddm+kde
zjsxwc
45 天前
还有个可能是硬盘容量太小,临时文件写满了磁盘,导致卡死
hexler
45 天前
宕机看 core ,没 core 看 kernel 日志。终极解决方案上服务器使 ipmi 。
chutianyao
45 天前
#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
45 天前
@chutianyao 如果是磁盘 io 的问题, 通常 jbd2 进程会 100%,可以观察下
s82kd92l
44 天前
可以把日志写到 ramoops 里,就算奔溃重启了也有一定概率能读到
Nosub
44 天前
可以看看这篇文章,1 楼基本说的是对的,https://nosub.net/posts/p/100
luozic
44 天前
首先排查一下硬件:cpu 内存 硬盘问题。 之后就是排查缓存 系统是否中毒等问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1028641

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX