我的桌面运行的是 Ubuntu 20.04。在过去的几个月里(至少),我注意到了很多奇怪的行为,我正在尝试找出如何解决它。
该系统配备 32 GB 内存、AMD Ryzen 5900X CPU、MSI MAG B550 Tomahawk MD 和几个 SSD。
症状是:
- 浏览器标签总是崩溃。每隔 15 分钟左右,我打开的一个标签页(我通常有大约 20-30 个标签页)就会崩溃(在 Chrome 中显示“Aw Snap!”,在 Firefox 和 Chromium 中显示类似消息)。
- Slack 会间歇性地崩溃。每天大约 1-2 次,它只挂了大约一分钟,然后就死了。
- 我的虚拟机将损坏。我通常一次打开 1-3 个,大约每月一次,我的 VM 将开始抱怨有一个只读文件系统。我将重新启动,它会启动到 initramfs,并且在磁盘上运行 fsck 通常会修复它。
我的直觉是我可能有一些失败的 RAM,但我不知道如何解决这个问题。是否有我可以查看的日志有助于找出 Chrome 一直崩溃的原因?
提前致谢!
编辑以在@heynnema 请求中添加:
david@jawad:~$ ls -lah /var/crash/
total 240M
drwxrwsrwt 2 root whoopsie 4.0K Mar 22 10:43 .
drwxr-xr-x 15 root root 4.0K Aug 31 2021 ..
-rw-r----- 1 david whoopsie 35M Mar 22 01:13 _opt_google_chrome_chrome.1000.crash
-rw-r----- 1 david whoopsie 27M Mar 22 10:43 _usr_bin_python3.8.1000.crash
-rw-r----- 1 david whoopsie 60M Mar 15 15:51 _usr_lib_insync_PySide2_Qt_libexec_QtWebEngineProcess.1000.crash
-rw-r--r-- 1 david whoopsie 0 Mar 15 15:51 _usr_lib_insync_PySide2_Qt_libexec_QtWebEngineProcess.1000.upload
-rw------- 1 whoopsie whoopsie 37 Mar 15 15:51 _usr_lib_insync_PySide2_Qt_libexec_QtWebEngineProcess.1000.uploaded
-rw-r----- 1 david whoopsie 98M Mar 22 07:28 _usr_lib_slack_slack.1000.crash
-rw-r----- 1 david whoopsie 22M Mar 17 09:45 _usr_share_typora_Typora.1000.crash
也会得到memtest。
根据要求进行下一次编辑:
# lshw -C memory
*-firmware
description: BIOS
vendor: American Megatrends International, LLC.
physical id: 0
version: A.60
date: 05/12/2021
size: 64KiB
capacity: 32MiB
capabilities: pci upgrade shadowing cdboot bootselect socketedrom edd int13floppynec int13floppytoshiba int13floppy360 int13floppy1200 int13floppy720 int13floppy2880 int5printscreen int9keyboard int14serial int17printer int10video acpi usb biosbootspecification uefi
*-memory
description: System Memory
physical id: 10
slot: System board or motherboard
size: 32GiB
*-bank:0
description: 2667 MHz (0.4 ns) [empty]
product: Unknown
vendor: Unknown
physical id: 0
serial: Unknown
slot: DIMM 0
clock: 2667MHz (0.4ns)
*-bank:1
description: DIMM DDR4 Synchronous Unbuffered (Unregistered) 2667 MHz (0.4 ns)
product: F4-3200C16-16GVK
vendor: Unknown
physical id: 1
serial: 00000000
slot: DIMM 1
size: 16GiB
width: 64 bits
clock: 2667MHz (0.4ns)
*-bank:2
description: 2667 MHz (0.4 ns) [empty]
product: Unknown
vendor: Unknown
physical id: 2
serial: Unknown
slot: DIMM 0
clock: 2667MHz (0.4ns)
*-bank:3
description: DIMM DDR4 Synchronous Unbuffered (Unregistered) 2667 MHz (0.4 ns)
product: F4-3200C16-16GVK
vendor: Unknown
physical id: 3
serial: 00000000
slot: DIMM 1
size: 16GiB
width: 64 bits
clock: 2667MHz (0.4ns)
*-cache:0
description: L1 cache
physical id: 13
slot: L1 - Cache
size: 768KiB
capacity: 768KiB
clock: 1GHz (1.0ns)
capabilities: pipeline-burst internal write-back unified
configuration: level=1
*-cache:1
description: L2 cache
physical id: 14
slot: L2 - Cache
size: 6MiB
capacity: 6MiB
clock: 1GHz (1.0ns)
capabilities: pipeline-burst internal write-back unified
configuration: level=2
*-cache:2
description: L3 cache
physical id: 15
slot: L3 - Cache
size: 64MiB
capacity: 64MiB
clock: 1GHz (1.0ns)
capabilities: pipeline-burst internal write-back unified
configuration: level=3
/var/crash 中有很多崩溃日志。
Ryzen 处理器对 RAM 非常挑剔。转到https://memtest86.com并免费下载/运行它们
memtest
以测试您的记忆力。至少完成所有 4/4 测试以确认良好的记忆力。这可能需要几个小时才能完成。更新#1:
memtest
失败的。给我看sudo lshw -C memory
。更新#2:
您有两个 16G DIMM 内存。首先,关闭计算机电源,然后卸下,然后重新插入每个 DIMM,然后重新运行
memtest
。如果它通过了,那么您可能已经解决了问题。如果失败,请移除一个 16G DIMM 并重新运行
memtest
。如果失败,则该 DIMM可能有缺陷。在任何一种情况下,移除该 DIMM 并重新插入另一个 DIMM 并重新运行
memtest
。记下哪个 DIMM 通过了,哪个 DIMM 失败了,这一点很重要。回来报告。
更新#3:
memtest
在单个 DIMM 上失败。怀疑 RAM 兼容性问题,但首先我们需要更新 BIOS 并重新测试memtest
. 在此处获取 BIOS 更新。注意:确认我有您的主板(MSI MAG B550 Tomahawk MD)的正确网页。
注意:在更新 BIOS 之前做好备份。
更新#4:
您的内存 DIMM (F4-3200C16-16GVK) 未出现在此处显示的内存兼容性列表中。
更新#5:
在此处查看用户手册的第 13 页和第 15 页,并确认首先填充 DIMM 插槽 A2,然后再填充 B2,使用完全相同规格的 DIMM。
更新#6:
有关正确规格的 DIMM,请参阅https://www.crucial.com/。见https://www.crucial.com/compatible-upgrade-for/msi-%28micro-star%29/mag-b550-tomahawk
更新#7:
确认 CPU 和 RAM 未超频。如果是,请将它们设置回默认时钟,然后使用 重新测试
memtest
。更新#8:
更换了内存。现在一切正常。
我有同样的问题,我试试这个,它对我有用:
Ubuntu 22.04 LTS 引入了 systemd-oomd,这是一个用户空间内存不足的杀手,旨在“在内核空间发生 OOM 之前采取纠正措施”。当它检测到内存压力变得有点过大时,它会进行干预以确保系统能够应对,并且(大多数)事情保持运行。我希望它对你有帮助。
大多数
systemd
服务都可以通过该systemctl
实用程序进行管理。在这种情况下,我们要禁用该systemd-oomd
服务。这可以通过以下方式完成:您应该会看到类似的内容(取决于您的操作系统):
然后,您可以使用以下方法验证该服务是否已禁用:
然后你应该看到:
但是,其他服务可能会尝试重新启动该
systemd-oomd
服务。为了防止这种情况,您可以“屏蔽”该服务。例如:然后
systemctl is-enabled
现在应该报告:更多
man systemctl
详情见;特别要注意有关屏蔽systemd
服务的注意事项。如何在 Ubuntu 22.04 中禁用 systemd OOM 进程杀手?