本文主要介紹在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 # 查詢普通實驗性軟體包名稱及版本,例如golang sudo yum list <packageName> --showduplicates # 安裝普通實驗性軟體包,其中<packageName>-<pacakgeVersion>為已查詢的軟體包名稱及版本,例如golang-1.13.6 sudo yum install -y <packageName>-<pacakgeVersion>
SCL外掛程式方式支援的開發套件
基於
GCC-7.3.1
的開發套件(devtoolset-7)基於
GCC-8.2.1
的開發套件(devtoolset-8)基於
GCC-9.1.1
的開發套件(devtoolset-9)基於
GCC-10.2.1
的開發套件(devtoolset-10)基於
GCC-11.2.1
的開發套件(devtoolset-11)
依次運行以下命令可以安裝軟體包。
# 先安裝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 sudo yum install -y devtoolset-10-gcc devtoolset-10-gdb devtoolset-10-binutils devtoolset-10-make sudo yum install -y devtoolset-11-gcc devtoolset-11-gdb devtoolset-11-binutils devtoolset-11-make
安裝成功後,您即可使用高版本的GCC以及相關工具。樣本命令如下:
# 先查看現有的SCL,需要指定庫名,本樣本命令中,庫名為devtoolset-7 scl -l devtoolset-7 # 運行相關的SCL軟體 scl enable devtoolset-7 'gcc --version'