[步骤] Linux Kdump 内核奔溃信息的分析 (Rocky Linux & RHEL 版)

注意:

在分析 Kdump 内核奔溃信息之前要先开启 Kdump:

正文:

步骤一:确保 crash 和 kernel-debuginfo 两个软件包已安装

# rpm -qa | grep "crash|kernel-debug"

(注意:如果 crash 和 kernel-debuginfo 两个软件包已安装的话,这里会有 crash 和 kernel-debuginfo 信息的显示)

步骤二:进入存放 KDUMP 内核奔溃信息的目录

# cd /var/crash/<date>/

步骤三:解析 KDUMP 生成内核崩溃信息

# crash vmlinux-2.6.32.12-0.7-default vmcore

(补充:这里以使用 2.6.32.12-0.7-default 版本的 kernel-debuginfo 解析为例)

步骤四:确认生成了 vmlinux-2.6.32.12-0.7-default.gz 压缩包

# ls vmlinux-2.6.32.12-0.7-default.gz

(注意:如果这里生成了 vmlinux-2.6.32.12-0.7-default.gz 压缩包的话,这里会有 vmlinux-2.6.32.12-0.7-default.gz 信息的显示)

(补充:这里以确认 2.6.32.12-0.7-default 版本的 kernel-debuginfo 生成的压缩包为例)

步骤五:解压 vmlinux-2.6.32.12-0.7-default.gz 压缩包

# gzip -d vmlinux-2.6.32.12-0.7-default.gz

(补充:这里以解压 2.6.32.12-0.7-default 版本的 kernel-debuginfo 生成的压缩包为例)

步骤六:分析 KDUMP 生成的内核奔溃信息

(步骤略)

[排错] 解决 Linux 运行时报错 “watchdog: Bug: soft lockup – CPU……” (CPU 软锁)

报错代码:

watchdog: Bug: soft lockup - CPU......

分析:

当 CPU 的负载过高时,一个 CPU 在运行某一个进程时,在内核模式下超过 20 秒没有回应,则看门狗程序会将系统所有 CPU 软锁住,然后会让这些 CPU 显示各自正在运行的进程堆栈跟踪

缓解方法:

延长看门狗等待 CPU 内核模式下的回应时间

方法一:通过 /proc/sys/kernel/watchdog_thresh 文件提高看门狗软所 CPU 的时间

# echo 20 > /proc/sys/kernel/watchdog_thresh

(补充:这里以将看门狗的值提高到为 20 为例,也可以根据自己的需求提高更多,默认值为 10)

方法二:通过新建文件提高看门狗软所 CPU 的时间
2.1 通过新建文件提高看门狗软所 CPU 的时间

# echo "kernel.watchdog_thresh=20" > /etc/sysctl.d/99-watchdog_thresh.conf

(补充:这里以将看门狗的值提高到为 20 为例,也可以根据自己的需求提高更多,默认值为 10)

2.2 让新建文件立刻生效

# sysctl -p  /etc/sysctl.d/99-watchdog_thresh.conf

深究方法:

开启 Kdump,等此报错再次发生时分析 Kdump 在内核崩溃时搜集信息 vmcore

[命令] Rocky Linux 8 & RHEL 8 命令 update-crypto-policies

内容一:update-crypto-policies 参数的意义

1) DEFAULT 不严格的安全等级,可以让系统使用 TLSv1.2
2) FUTURE 严格的安全等级,只能让系统使用 TLSv1.2 不能使用 TLSv1.3

内容二:显示当前的 update-crypto-policies 参数

# update-crypto-policies --show
DEFAULT

(补充:从这里可以看出目前的 update-crypto-policies 参数是 DEFAULT)

内容三:设置 update-crypto-policies 参数

# update-crypto-policies --set=FUTURE

(补充:这里以将 update-crypto-policies 参数设置为 FUTURE 为例)

[排错] 解决 Linux 执行 curl 命令时报错 “curl: (35) error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure”

报错代码:

curl: (35) error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure

分析:

Rocky Linux 8 & RHEL 8 已经默认废弃 TLSv1.2
可以使用 TLSv1.3 替代 TLSv1.2 或者将 update-crypto-policies 参数设置为 DEFAULT 以解决此报错

解决方法:

步骤一:显示当前的 update-crypto-policies 参数

# update-crypto-policies --show
FUTURE

(补充:从这里可以看出目前的 update-crypto-policies 参数是 FUTURE)

步骤二:将 update-crypto-policies 参数设置为 DEFAULT

# update-crypto-policies --set=DEFAULT

(补充:这里以将 update-crypto-policies 参数设置为 DEFAULT 为例)