本文主要介紹在Alibaba Cloud Linux 2操作系統中查看系統或內核參數、設置內核轉儲功能的操作步驟,同時提供了Debuginfo包、源碼包以及實驗性軟件包的獲取方式。
查看或修改參數
查看或修改系統參數
Alibaba Cloud Linux 2在配置文件/etc/sysctl.d/50-aliyun.conf中更新了下列內核配置參數,運行sysctl命令,可查看或修改Alibaba Cloud Linux 2運行時的系統參數。
系統參數
說明
kernel.hung_task_timeout_secs = 240
延長內核hung_task超時秒數,避免頻繁的hung_task提示。
kernel.panic_on_oops = 1
允許內核發生Oops錯誤時拋出Kernel Panic異常,如果配置了Kdump則可自動捕獲崩潰詳情。
kernel.watchdog_thresh = 50
延長hrtimer、NMI、Soft Lockup以及Hard Lockup等事件的閾值,避免可能出現的內核誤報。
kernel.hardlockup_panic = 1
允許內核發生Hard Lockup錯誤時拋出Kernel Panic異常,如果配置了Kdump則可自動捕獲崩潰詳情。
查看內核參數
Alibaba Cloud Linux 2更新了下列內核參數,運行
cat /proc/cmdline
命令,可查看Alibaba Cloud Linux 2運行時的內核參數。內核參數
說明
crashkernel=0M-2G:0M,2G-8G:192M,8G-:256M
為內核轉儲(Kdump)功能預留的內存空間。
cryptomgr.notests
關閉crypto在內核啟動時的自檢行為,加快啟動速度。
cgroup.memory=nokmem
關閉Memory Cgroup的內核內存統計功能,避免出現潛在的內核不穩定問題。
rcupdate.rcu_cpu_stall_timeout=300
延長RCU CPU Stall Detector的超時閾值為300秒,避免內核誤報。
開啟或關閉內核轉儲(Kdump)功能
Alibaba Cloud Linux 2提供了Kdump服務。開啟該服務后可捕獲內核錯誤,方便您分析內核崩潰現象。
所選實例規格的內存小于或等于2 GiB時,無法使用Kdump服務。
依次運行以下命令可以開啟Kdump服務。
# 先開啟Kdump服務 sudo systemctl enable kdump.service # 重啟Kdump服務 sudo systemctl restart kdump.service
依次運行以下命令可以將Kdump服務預留的內存地址空間歸還給操作系統,并徹底關閉Kdump服務。
# 先更改/sys/kernel/kexec_crash_size文件配置 sudo sh -c 'echo 0 > /sys/kernel/kexec_crash_size' # 關閉Kdump服務 sudo systemctl disable kdump.service # 停止Kdump服務 sudo systemctl stop kdump.service
說明Kdump服務預留的內存地址空間歸還給操作系統后,必須重啟操作系統才可再次開啟Kdump服務。
安裝Debuginfo包和源碼包
依次運行以下命令可以安裝Debuginfo包。
# 先安裝yum-utils sudo yum install -y yum-utils # 安裝Debuginfo包,其中<packageName>為您預期安裝的軟件包名稱 sudo debuginfo-install -y <packageName>
依次運行以下命令可以安裝源碼包。
# 先安裝源碼 sudo yum install -y alinux-release-source # 安裝yum-utils sudo yum install -y yum-utils # 安裝源碼包,其中<sourcePackageName>為您預期安裝的軟件包名稱 sudo yumdownloader --source <sourcePackageName>
使用試驗性支持的軟件包
試驗性支持的軟件包指由阿里云官方提供,但未經嚴格測試,不保證質量的軟件包。Alibaba Cloud Linux 2提供了普通試驗性軟件包和SCL插件方式支持的試驗性軟件包。
普通試驗性軟件包
Golang 1.12
Golang 1.13
依次運行以下命令可以安裝軟件包。
# 先開啟YUM倉庫支持 sudo yum install -y alinux-release-experimentals # 安裝普通試驗性軟件包,其中<packageName>為您預期安裝的軟件包名稱 sudo yum install -y <packageName>
SCL插件方式支持的開發工具包
基于
GCC-7.3.1
的開發工具包(devtoolset-7)基于
GCC-8.2.1
的開發工具包(devtoolset-8)基于
GCC-9.1.1
的開發工具包(devtoolset-9)
依次運行以下命令可以安裝軟件包。
# 先安裝scl-utils sudo yum install -y scl-utils # 打開YUM倉庫支持 sudo yum install -y alinux-release-experimentals # 從YUM源安裝您需要的軟件包,以下示例命令同時安裝了SCL插件方式支持的所有開發工具包 sudo yum install -y devtoolset-7-gcc devtoolset-7-gdb devtoolset-7-binutils devtoolset-7-make sudo yum install -y devtoolset-8-gcc devtoolset-8-gdb devtoolset-8-binutils devtoolset-8-make sudo yum install -y devtoolset-9-gcc devtoolset-9-gdb devtoolset-9-binutils devtoolset-9-make
安裝成功后,您即可使用高版本的GCC以及相關工具。示例命令如下:
# 先查看現有的SCL,需要指定庫名,本示例命令中,庫名為devtoolset-7 scl -l devtoolset-7 # 運行相關的SCL軟件 scl enable devtoolset-7 'gcc --version'
常見問題
安裝Debuginfo包失敗怎么處理?
如果在安裝Debuginfo包和源碼包中執行sudo debuginfo-install -y <packageName>
命令為軟件包安裝相應的Debuginfo包失敗,請嘗試執行以下命令以進行安裝。
<packageName>
需替換為要安裝的軟件包名,例如kernel-debuginfo
。
sudo yum install --enablerepo=*-debug <packageName>