诊断 Ubuntu 崩溃的方法?

诊断 Ubuntu 崩溃的方法?

我是运行 14.04 LTS 桌面的非技术用户。我已经使用 Ubuntu 工作了好几年。硬件有点旧了。

我偶尔会遇到 Ubuntu 的技术问题 - 通常是速度变慢或冻结,但最近(即上周)我频繁重启 Unity(这会清除所有正在运行的应用程序并需要登录)。

我突然意识到我不知道如何诊断这样的问题——或者任何系统崩溃问题。我不知道诊断工具,甚至不知道诊断方法。

我唯一用来监控系统问题的工具是 htop。通过它,我可以看到 CPU 和内存周期性地出现峰值——通常是 Firefox、Amarok 和 Chromium,但有时是 compiz 或一些神秘的系统命令(例如“X core :0 -seat ....”抱歉,我不知道如何从 htop 复制输出)。

当我从浏览器下载东西时往往会发生这个问题,尽管我不想说这是唯一一次......

我已经打开了 dmesg 和 var/log/syslog,但承认我不知道如何解释这些数据。

dmesg 可能有有趣的数据,但我不知道如何找出时间戳。我有点了解 syslog,但我没有足够的经验来知道哪种错误报告很重要以及如何处理它:

例如,这是窗口管理器上次崩溃的系统日志:

  $(/usr/lib/php5/maxlifetime))
Jan 30 19:17:01 robert-KJ379AA-ABA-a6400f CRON[4048]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jan 30 19:33:29 robert-KJ379AA-ABA-a6400f wpa_supplicant[992]: message repeated 29 times: [ wlan1: CTRL-EVENT-SCAN-STARTED ]
Jan 30 19:34:21 robert-KJ379AA-ABA-a6400f wpa_supplicant[992]: wlan1: WPA: Group rekeying completed with 74:9d:dc:5f:32:b1 [GTK=TKIP]
Jan 30 19:35:29 robert-KJ379AA-ABA-a6400f wpa_supplicant[992]: wlan1: CTRL-EVENT-SCAN-STARTED 
Jan 30 19:39:01 robert-KJ379AA-ABA-a6400f CRON[4123]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime))
Jan 30 19:59:22 robert-KJ379AA-ABA-a6400f kernel: [ 7911.658443] [drm:radeon_gem_object_create] *ERROR* Failed to allocate GEM object (4096, 2, 4096, -12)
Jan 30 19:59:29 robert-KJ379AA-ABA-a6400f kernel: [ 7918.797835] chrome invoked oom-killer: gfp_mask=0x0, order=0, oom_score_adj=200
Jan 30 19:59:29 robert-KJ379AA-ABA-a6400f kernel: [ 7918.797842] chrome cpuset=/ mems_allowed=0
Jan 30 19:59:29 robert-KJ379AA-ABA-a6400f kernel: [ 7918.797846] CPU: 1 PID: 2837 Comm: chrome Not tainted 3.13.0-76-generic #120-Ubuntu`

我怀疑崩溃发生在 1 月 30 日 19:39:01,因为这是最大的时间间隔。崩溃后的第一条消息是 radeon(显卡)消息,这似乎是罪魁祸首,但另一方面,我猜内存/CPU 使用率也是一个因素。此外,您是否希望崩溃数据会出现碰撞?

这些是解决问题的唯一工具吗?是否有任何方法可以将问题缩小到硬件/应用程序/系统空间?

更新:又一次崩溃,出现更多错误消息,指出 compiz/窗口管理器故障。(我不知道如何解决)。以下是来自 syslog 的一些内容:

Jan 31 11:39:28 robert-KJ379AA-ABA-a6400f kernel: [64317.672548] [drm:radeon_gem_object_create] *ERROR* Failed to allocate GEM object (1048576, 2, 4096, -23 
Jan 31 11:39:28 robert-KJ379AA-ABA-a6400f kernel: [64317.672591] compiz[15437]: segfault at 0 ip 00007f5e027bd7b6 sp 00007ffe329bf9c0 error 6 in r600_dri.so[7f5e0254d000+399000]
Jan 31 11:39:39 robert-KJ379AA-ABA-a6400f gnome-session[15215]: WARNING: Child process 15437 was already dead.
Jan 31 11:39:39 robert-KJ379AA-ABA-a6400f gnome-session[15215]: WARNING: Application 'compiz.desktop' killed by signal 11
    Jan 31 11:39:39 robert-KJ379AA-ABA-a6400f gnome-session[15215]: WARNING: App 'compiz.desktop' respawning too quickly
Jan 31 11:39:40 robert-KJ379AA-ABA-a6400f gnome-session[15215]: CRITICAL: We failed, but the fail whale is dead. Sorry....``

更新2:我发现每次都会出现相同的错误消息。似乎有什么东西正在终止 compiz.desktop/gnome-session。我只是不知道该怎么办。

更新 3显然问题变得更加严重了。Unity 无法加载,我只看到一个空白的桌面。我尝试了此线程中的故障排除步骤,但目前没有成功。我得出的结论是,问题主要出在软件/操作系统方面,而不是硬件方面,尽管我真的不确定! Unity 无法加载,没有启动器,也没有出现 Dash

答案1

您可以使用日志分析和可视化软件。其中之一是 Splunk Enterprise,它也可以免费供个人使用(大约 500 MB 的数据分析)。就我而言,我习惯以递归方式查看 /var/log 目录。试试看Splunk

如果你正在寻找开源替代方案,你可以参考这个端到端教程这里

虽然设置 ELK 很有趣,但使用 Splunk OOTB 很容易。希望这能有所帮助。

相关内容