Ubuntu Server 作为企业级应用的主流操作系统,其内核管理与调优直接关系到系统的性能、安全性和稳定性。与桌面环境不同,服务器环境对内核的稳定性、资源利用效率和安全性有更高要求。虽然 Ubuntu 提供了经过充分测试的通用内核,但在特定场景下(如高性能计算、数据库服务、网络功能虚拟化等),使用自定义编译内核或进行精细的内核参数调优可以显著提升系统性能。
内核作为操作系统的核心,负责管理系统的进程、内存、设备驱动和网络栈等关键资源。一个优化不当的内核可能导致性能瓶颈、资源浪费甚至系统崩溃。因此,系统管理员需要掌握内核管理的全面技能,包括版本选择、编译安装、参数调优和故障恢复等。
本文将深入探讨 Ubuntu Server 内核管理的各个方面,从理论基础到实践操作,为系统管理员和 DevOps 工程师提供一套完整的内核管理方案。
Linux 内核采用单体宏内核设计,但与传统的宏内核不同,它引入了模块化机制,允许在运行时动态加载和卸载内核模块。这种设计在保持性能的同时提供了灵活性。
内核主要由以下几个子系统组成:
每个子系统都经过多年演进,形成了复杂的内部机制和可调参数。理解这些子系统的相互作用是有效调优的基础。
Ubuntu 内核版本命名遵循特定模式,如"5.4.0-100-generic",其中:
Ubuntu 提供多种内核变体以适应不同场景:
Ubuntu 每两年发布一个长期支持版本(LTS),提供5年的安全更新和维护。LTS版本使用经过充分测试的稳定内核,适合生产环境。
选择策略应考虑:
对于需要新内核功能但又要求稳定性的场景,可以考虑使用Ubuntu提供的硬件启用堆栈(HWE)内核,它为LTS版本提供更新的内核和驱动程序,同时保持稳定性。
新内核版本通常提供更好的硬件支持,特别是对于新型处理器架构、存储设备和网络接口卡。但同时也可能引入与旧硬件的兼容性问题。
评估硬件兼容性时需要考虑:
可以使用lspci -k
命令查看当前硬件使用的驱动程序,并检查目标内核版本是否提供相应支持。
编译Linux内核需要充足的磁盘空间(至少20GB)和内存(建议8GB以上)。首先安装必要的编译工具和依赖库:
sudo apt update
sudo apt install build-essential libncurses-dev bison flex libssl-dev \
libelf-dev dwarves zstd bc git fakeroot dpkg-dev
创建编译目录并分配足够空间:
sudo mkdir /usr/src/kernel
sudo chown $(id -u):$(id -g) /usr/src/kernel
cd /usr/src/kernel
从Ubuntu内核Git仓库获取源代码,这样可以保留Ubuntu的特定补丁和配置:
git clone git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/$(lsb_release -cs)
cd linux
或者从kernel.org获取官方源码:
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.94.tar.xz
tar -xvf linux-5.15.94.tar.xz
cd linux-5.15.94
内核配置是编译过程中最关键的一步,它决定了内核的功能、性能和大小。
使用当前运行内核的配置作为基础:
cp /boot/config-$(uname -r) .config
运行菜单配置界面进行定制:
make menuconfig
重要配置选项分类说明:
处理器类型与特性:
内存管理选项:
文件系统支持:
网络选项:
设备驱动程序:
安全选项:
使用脚本自动化配置检查:
#!/bin/bash
# 检查配置是否包含必需选项
check_config() {
local config_option=$1
local description=$2
if ! grep -q "^${config_option}=y" .config; then
echo "警告: 未启用 ${description} (${config_option})"
fi
}
check_config "CONFIG_EFI_STUB" "EFI启动支持"
check_config "CONFIG_MODULES" "模块支持"
check_config "CONFIG_BLK_DEV_INITRD" "初始RAM磁盘支持"
使用多线程编译大幅缩短编译时间:
# 获取CPU核心数
nproc=$(nproc)
# 使用所有核心编译
make -j$nproc
# 或者留出一些核心给系统其他任务
make -j$((nproc - 2))
针对特定CPU架构优化编译:
# 查看当前CPU支持的指令集
cat /proc/cpuinfo | grep flags | head -1
# 在Makefile中或在make命令中指定优化标志
make -j$nproc KCFLAGS="-march=native -O2"
编译目标说明:
Image
或bzImage
:压缩的内核镜像modules
:所有可加载模块dtbs
:设备树二进制文件(ARM架构需要)使用内核包构建工具创建Debian包,便于安装和管理:
# 安装必要的包构建工具
sudo apt install kernel-package
# 清理编译产物
make clean
# 配置内核版本标识(避免与官方包冲突)
echo "-custom-$(date +%Y%m%d)" > .localversion
# 构建Debian包
make -j$nproc deb-pkg
构建完成后会在上层目录生成多个.deb文件:
安装生成的Debian包:
cd ..
sudo dpkg -i linux-image-*.deb linux-headers-*.deb
验证安装:
# 检查新内核是否已添加到grub菜单
sudo grep -A100 "menuentry" /boot/grub/grub.cfg | grep -i custom
# 查看已安装的内核版本
dpkg -l | grep linux-image
initrd是内核启动时使用的临时根文件系统,包含必要的硬件驱动和工具:
# 更新initrd镜像
sudo update-initramfs -c -k $(make kernelversion)-custom
# 验证initrd文件
ls -lh /boot/initrd.img-*
initrd创建过程可以通过/etc/initramfs-tools/目录下的配置文件进行定制,添加特定模块或工具。
更新GRUB引导加载程序配置:
# 更新GRUB菜单
sudo update-grub
# 设置默认启动内核(可选)
sudo grub-set-default "Ubuntu, with Linux $(make kernelversion)-custom"
# 验证默认内核设置
sudo grub-editenv list
调整GRUB参数以优化启动:
quiet
参数减少启动输出nosplash
禁用启动画面加速启动rootdelay
给存储设备更多初始化时间如果系统启用了UEFI安全启动,需要签名自定义内核:
# 创建签名密钥(如果尚未创建)
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Custom Kernel/"
# 导入密钥到MOK(Machine Owner Key)列表
sudo mokutil --import MOK.der
# 签名内核镜像
sudo sbsign --key MOK.priv --cert MOK.der /boot/vmlinuz-$(make kernelversion)-custom --output /boot/vmlinuz-$(make kernelversion)-custom.signed
sudo mv /boot/vmlinuz-$(make kernelversion)-custom.signed /boot/vmlinuz-$(make kernelversion)-custom
# 签名内核模块(如果需要)
for module in $(find /lib/modules/$(make kernelversion)-custom -name "*.ko"); do
sudo kmodsign sha512 MOK.priv MOK.der $module
done
重启后需要按照提示完成MOK密钥注册。
重启到新内核后,进行基本功能验证:
# 检查当前运行内核版本
uname -r
# 验证硬件识别
dmesg | grep -i "memory\|cpu\|sata\|nvme"
# 测试基本功能
echo "测试网络连接..."
ping -c 3 8.8.8.8
echo "测试存储性能..."
dd if=/dev/zero of=./testfile bs=1G count=1 oflag=direct
echo "检查加载的模块..."
lsmod | head -20
创建自动化测试脚本监控系统稳定性:
#!/bin/bash
# 内核功能测试脚本
run_tests() {
local test_name=$1
local command=$2
echo "运行测试: $test_name"
if eval $command; then
echo "✓ $test_name 通过"
return 0
else
echo "✗ $test_name 失败"
return 1
fi
}
run_tests "内存分配" "stress-ng --vm 1 --vm-bytes 1G --timeout 10s"
run_tests "IO操作" "dd if=/dev/zero of=/tmp/test bs=1M count=100 status=none"
run_tests "网络连通性" "ping -c 3 8.8.8.8 > /dev/null"
/proc和/sys是内核提供的虚拟文件系统,用于查看和调整内核参数:
/proc 重要文件:
/sys 重要目录:
使用脚本监控关键参数:
#!/bin/bash
# 内核状态监控脚本
monitor_kernel() {
while true; do
clear
echo "===== 内核状态监控 $(date) ====="
echo "负载: $(cat /proc/loadavg)"
echo "内存: $(grep "MemAvailable" /proc/meminfo | awk '{print $2}') kB可用"
echo "网络:"
cat /proc/net/dev | tail -n +3 | awk '{print $1 ": " $2 " RX, " $10 " TX"}'
echo "磁盘IO:"
cat /proc/diskstats | awk '{print $3 ": " $4 " reads, " $8 " writes"}'
sleep 2
done
}
内核模块允许在运行时扩展内核功能而不需要重新编译:
# 查看已加载模块
lsmod
# 加载模块
sudo modprobe module_name
# 卸载模块
sudo modprobe -r module_name
# 查看模块信息
modinfo module_name
# 列出模块依赖
modprobe --show-depends module_name
模块黑名单配置(/etc/modprobe.d/blacklist.conf):
# 禁用不需要的模块
blacklist floppy
blacklist firewire-core
模块参数配置(/etc/modprobe.d/custom.conf):
# 设置模块参数
options ixgbe max_vfs=8
options nvidia NVreg_EnableMSI=1
使用sysctl动态调整内核参数:
# 查看所有可调参数
sysctl -a
# 临时调整参数
sudo sysctl -w net.core.rmem_max=16777216
# 从文件加载配置
sudo sysctl -p /etc/sysctl.d/99-custom.conf
使用/proc接口调整参数:
# 调整虚拟内存参数
echo 10 > /proc/sys/vm/swappiness
# 调整文件句柄限制
echo 1000000 > /proc/sys/fs/file-max
使用perf工具进行性能分析:
# 安装perf工具
sudo apt install linux-tools-common linux-tools-$(uname -r)
# 监控CPU性能事件
sudo perf top
# 记录系统wide性能数据
sudo perf record -a -g sleep 10
# 分析性能数据
perf report
使用ebpf工具进行高级监控:
# 安装bcc工具
sudo apt install bpfcc-tools
# 监控文件IO
sudo opensnoop-bpfcc
# 监控TCP连接
sudo tcpconnect-bpfcc
# 监控系统调用
sudo syscount-bpfcc
内核日志是诊断问题的重要资源:
# 查看内核日志
dmesg
# 实时监控内核日志
sudo dmesg -w
# 查看系统日志中的内核消息
journalctl -k
# 过滤特定级别的消息
dmesg --level=err,warn
# 按时间查看日志
dmesg -T
常见故障诊断场景:
创建日志分析脚本自动检测问题:
#!/bin/bash
# 内核日志分析脚本
analyze_kernel_logs() {
local log_file=${1:-/var/log/kern.log}
echo "分析内核日志: $log_file"
echo "错误统计:"
grep -i "error\|fail" $log_file | awk '{print $5}' | sort | uniq -c | sort -nr
echo "警告统计:"
grep -i "warn" $log_file | awk '{print $5}' | sort | uniq -c | sort -nr
echo "最近硬件事件:"
grep -i "usb\|sata\|nvme\|memory" $log_file | tail -10
}
网络性能调优是服务器内核调优的重要方面:
TCP缓冲区调整:
# /etc/sysctl.d/10-network.conf
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
连接追踪优化:
# 增加连接跟踪表大小
net.netfilter.nf_conntrack_max = 524288
net.netfilter.nf_conntrack_buckets = 131072
# 减少连接超时时间
net.netfilter.nf_conntrack_tcp_timeout_established = 1200
TCP拥塞控制算法选择:
# 查看可用算法
sysctl net.ipv4.tcp_available_congestion_control
# 设置算法(BBR适用于高延迟高带宽网络)
echo "bbr" > /proc/sys/net/ipv4/tcp_congestion_control
内存管理对系统性能有直接影响:
页面缓存策略:
# /etc/sysctl.d/10-vm.conf
# 调整脏页写回策略
vm.dirty_ratio = 10
vm.dirty_background_ratio = 5
vm.dirty_writeback_centisecs = 500
# 调整内存过量使用策略
vm.overcommit_memory = 1
vm.overcommit_ratio = 80
透明大页配置:
# 查看当前大页设置
cat /sys/kernel/mm/transparent_hugepage/enabled
# 对于延迟敏感应用,建议设置为madvise
echo "madvise" > /sys/kernel/mm/transparent_hugepage/enabled
交换空间优化:
# 降低交换倾向(0-100,越低越避免交换)
vm.swappiness = 10
# 调整缓存压力
vm.vfs_cache_pressure = 50
根据使用的文件系统类型进行针对性优化:
Ext4文件系统优化:
# 挂载选项优化(/etc/fstab)
UUID=xxx / ext4 defaults,noatime,nodiratime,commit=60,barrier=0 0 1
# 调整日志提交间隔
echo 60000 > /proc/sys/fs/ext4/commit_interval
XFS文件系统优化:
# 挂载选项优化
UUID=xxx / xfs defaults,noatime,nodiratime,logbsize=256k,allocsize=1m 0 0
# 调整I/O调度器
echo "deadline" > /sys/block/sda/queue/scheduler
Btrfs文件系统优化:
# 挂载选项优化
UUID=xxx / btrfs defaults,noatime,compress=zstd,autodefrag,ssd 0 0
# 调整压缩级别
btrfs filesystem defragment -r -czstd /path
针对工作负载特性调整调度策略:
CPU调度器调整:
# 查看可用调度器
cat /sys/block/sda/queue/scheduler
# 设置CFQ调度器参数(适用于旋转磁盘)
echo "cfq" > /sys/block/sda/queue/scheduler
echo 1000 > /sys/block/sda/queue/iosched/slice_idle
中断亲和性设置:
# 安装irqbalance或手动设置IRQ亲和性
sudo apt install irqbalance
# 手动分配网络中断到特定CPU
echo 2 > /proc/irq/$(cat /proc/interrupts | grep eth0 | awk -F: '{print $1}')/smp_affinity
CPU频率调节:
# 查看可用调节器
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
# 设置性能模式(最大化性能)
echo "performance" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
平衡安全性与性能的安全调优:
内核安全加固:
# /etc/sysctl.d/10-security.conf
# 禁用ICMP重定向
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
# 启用源路由验证
net.ipv4.conf.all.rp_filter = 1
# 禁用IP转发(如果不是路由器)
net.ipv4.ip_forward = 0
内存保护:
# 启用ASLR(地址空间布局随机化)
kernel.randomize_va_space = 2
# 限制内核调试信息暴露
kernel.kptr_restrict = 1
kernel.dmesg_restrict = 1
系统调用过滤:
# 使用seccomp限制不必要的系统调用
# 或使用Linux安全模块(AppArmor/SELinux)
sudo apt install apparmor apparmor-utils
sudo aa-enforce /etc/apparmor.d/*
确保系统始终有可用的备用内核:
# 查看GRUB菜单项
grep -E "menuentry|submenu" /boot/grub/grub.cfg
# 设置备用内核为默认启动项(在主要内核失败时)
sudo grub-set-default "1"
# 创建自定义GRUB菜单
sudo nano /etc/grub.d/40_custom
示例自定义GRUB条目:
menuentry 'Ubuntu, with Linux 5.4.0-100-custom (recovery)' {
recordfail
load_video
insmod gzio
insmod part_gpt
insmod ext2
set root='hd0,gpt2'
echo 'Loading Linux 5.4.0-100-custom ...'
linux /boot/vmlinuz-5.4.0-100-custom root=/dev/mapper/ubuntu--vg-ubuntu--lv ro recovery nomodeset dis_ucode_ldr
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-5.4.0-100-custom
}
常见启动问题及解决方法:
initrd问题修复:
# 从恢复环境或Live CD挂载系统
sudo mount /dev/sda1 /mnt
sudo mount /dev/sda5 /mnt/root
sudo mount --bind /dev /mnt/root/dev
sudo mount --bind /proc /mnt/root/proc
sudo mount --bind /sys /mnt/root/sys
# chroot到系统环境
sudo chroot /mnt/root
# 重新生成initrd
update-initramfs -u -k all
GRUB修复:
# 重新安装GRUB引导程序
sudo grub-install /dev/sda
sudo update-grub
文件系统修复:
# 检查并修复文件系统
fsck -y /dev/sda1
# 对于XFS文件系统
xfs_repair /dev/sda1
当新内核出现问题时,快速回滚到稳定版本:
# 查看已安装的内核
dpkg -l | grep linux-image
# 移除问题内核
sudo apt purge linux-image-5.4.0-100-custom
# 保留但禁用问题内核
sudo mv /boot/vmlinuz-5.4.0-100-custom /boot/vmlinuz-5.4.0-100-custom.disabled
sudo mv /boot/initrd.img-5.4.0-100-custom /boot/initrd.img-5.4.0-100-custom.disabled
# 更新GRUB配置
sudo update-grub
创建自动化回滚脚本:
#!/bin/bash
# 内核回滚脚本
rollback_kernel() {
echo "当前内核: $(uname -r)"
echo "可用内核:"
local kernels=($(ls /boot/vmlinuz-* | grep -v disabled | sort -V))
for i in "${!kernels[@]}"; do
echo "$i: ${kernels[$i]#/boot/vmlinuz-}"
done
read -p "选择回滚目标内核编号: " choice
if [[ -n "${kernels[$choice]}" ]]; then
local target_kernel="${kernels[$choice]#/boot/vmlinuz-}"
echo "设置默认启动内核: $target_kernel"
sudo grub-set-default "Ubuntu, with Linux $target_kernel"
sudo update-grub
echo "重启后生效"
else
echo "无效选择"
fi
}
配置内核崩溃转储以便分析问题:
# 安装kdump工具
sudo apt install kdump-tools crash
# 配置崩溃内存保留
sudo nano /etc/default/kdump-tools
# 设置USE_KDUMP=1
# 指定崩溃转储位置
sudo nano /etc/kdump.conf
# path /var/crash
# 配置grub引导参数保留崩溃内存
sudo nano /etc/default/grub
# 在GRUB_CMDLINE_LINUX中添加"crashkernel=256M"
分析内核转储文件:
# 使用crash工具分析转储
crash /usr/lib/debug/boot/vmlinuz-$(uname -r) /var/crash/xxx/dump.*
# 常用分析命令
bt -a # 查看所有CPU的堆栈回溯
log # 查看内核日志
kmem -i # 查看内存信息
ps # 查看进程状态
建立预防性维护流程减少故障发生:
内核健康监控:
#!/bin/bash
# 内核健康检查脚本
check_kernel_health() {
local errors=0
# 检查内核错误
local kernel_errors=$(dmesg -l err | wc -l)
if [[ $kernel_errors -gt 10 ]]; then
echo "警告: 内核错误数量异常: $kernel_errors"
((errors++))
fi
# 检查OOM事件
local oom_events=$(dmesg | grep -i "out of memory" | wc -l)
if [[ $oom_events -gt 0 ]]; then
echo "警告: 检测到OOM事件: $oom_events"
((errors++))
fi
# 检查硬件错误
local hardware_errors=$(dmesg | grep -i "hardware error" | wc -l)
if [[ $hardware_errors -gt 0 ]]; then
echo "警告: 检测到硬件错误: $hardware_errors"
((errors++))
fi
return $errors
}
定期内核更新检查:
#!/bin/bash
# 内核更新检查脚本
check_kernel_updates() {
echo "检查内核更新..."
apt update > /dev/null 2>&1
local updates=$(apt list --upgradable 2>/dev/null | grep linux-image | wc -l)
if [[ $updates -gt 0 ]]; then
echo "发现 $updates 个内核更新可用"
apt list --upgradable | grep linux-image
return 1
else
echo "内核已是最新版本"
return 0
fi
}
Ubuntu Livepatch服务允许在不重启的情况下应用关键安全补丁:
# 启用Livepatch服务
sudo apt install ubuntu-advantage-tools
sudo ua attach [TOKEN]
sudo ua enable livepatch
# 检查Livepatch状态
sudo canonical-livepatch status
# 手动检查更新
sudo canonical-livepatch refresh
内核热补丁技术细节:
使用kgdb进行内核调试:
# 配置内核支持kgdb
# Kernel hacking -> KGDB: kernel debugger
# 启动参数添加kgdboc(kgdb over console)
kgdboc=ttyS0,115200
# 在调试主机上连接
gdb /usr/lib/debug/boot/vmlinuz-$(uname -r)
target remote /dev/ttyS0
使用SystemTap进行动态跟踪:
# 安装SystemTap
sudo apt install systemtap systemtap-runtime
# 简单脚本示例
cat > trace_open.stp << 'EOF'
probe syscall.open
{
printf("%s(%d) open (%s)\n", execname(), pid(), filename)
}
EOF
# 运行脚本
sudo stap trace_open.stp
容器环境对内核有特殊要求:
命名空间与cgroup优化:
# 确保启用必要的命名空间支持
CONFIG_NAMESPACES=y
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
CONFIG_PID_NS=y
CONFIG_NET_NS=y
CONFIG_CGROUPS=y
# 调整cgroup参数
echo 10000 > /proc/sys/kernel/pid_max
echo 1048576 > /proc/sys/fs/nr_open
容器特定调优:
# 调整网络命名空间限制
echo 1024 > /proc/sys/net/core/somaxconn
# 调整用户命名空间限制
echo 65536 > /proc/sys/user/max_user_namespaces
# 调整内存overcommit策略
echo 1 > /proc/sys/vm/overcommit_memory
最小权限原则实施:
# 使用内核能力替代root权限
setcap cap_net_raw+ep /usr/bin/ping
# 禁用不需要的能力
capsh --drop=cap_sys_admin -- -c "your_command"
# 使用seccomp过滤器
sudo apt install seccomp
内核自保护配置:
# 启用内核模块签名验证
CONFIG_MODULE_SIG=y
CONFIG_MODULE_SIG_FORCE=y
# 启用内核地址空间布局随机化
CONFIG_RANDOMIZE_BASE=y
# 启用栈保护
CONFIG_STACKPROTECTOR_STRONG=y
创建完整的内核管理自动化方案:
Ansible角色示例:
# roles/kernel_management/tasks/main.yml
- name: 安装内核编译依赖
apt:
name: "{{ item }}"
state: present
loop: "{{ kernel_build_dependencies }}"
- name: 获取内核源代码
git:
repo: "{{ kernel_source_repo }}"
dest: "/usr/src/linux"
version: "{{ kernel_version }}"
- name: 配置内核
command: make oldconfig
args:
chdir: "/usr/src/linux"
- name: 编译内核
command: make -j {{ ansible_processor_cores }} deb-pkg
args:
chdir: "/usr/src/linux"
- name: 安装内核包
apt:
deb: "/usr/src/linux-image-{{ kernel_version }}.deb"
监控与告警集成:
#!/bin/bash
# 内核事件监控与告警
monitor_kernel_events() {
# 监控dmesg中的错误和警告
dmesg -w -l err,warn | while read line; do
# 发送告警(邮件、Slack等)
send_alert "内核事件: $line"
# 记录到监控系统
echo "$(date): $line" >> /var/log/kernel-events.log
# 根据事件类型触发相应操作
case "$line" in
*"OOM"*)
handle_oom_event
;;
*"hardware error"*)
handle_hardware_error
;;
*"file system error"*)
handle_filesystem_error
;;
esac
done
}
Ubuntu Server内核管理是一个涉及多方面知识的复杂领域,需要系统管理员具备深厚的理论基础和丰富的实践经验。通过本文的全面介绍,读者应该能够理解Linux内核的核心概念,掌握自定义内核的编译和安装方法,学会内核参数的调优技巧,并具备内核故障诊断和恢复的能力。
内核管理不是一次性的任务,而是一个持续的过程。随着硬件技术的发展和工作负载的变化,内核配置和调优也需要相应调整。建立完善的监控和自动化体系,制定规范的变更管理流程,是确保系统长期稳定运行的关键。
最后,记住内核调优的黄金法则:在做出任何更改之前,确保有完整的备份和回滚计划;每次只修改一个参数,并仔细评估其影响;在生产环境实施前,充分测试所有变更。通过这些谨慎的方法,您可以最大化系统性能,同时保持稳定性和可靠性。
参数 | 推荐值 | 说明 |
---|---|---|
vm.swappiness | 10 | 降低交换倾向 |
vm.dirty_ratio | 10 | 脏页写回阈值 |
net.core.rmem_max | 16777216 | TCP接收缓冲区最大值 |
net.ipv4.tcp_congestion_control | bbr | TCP拥塞控制算法 |
kernel.panic | 10 | 内核panic后自动重启时间 |
通过系统性的方法和持续的学习,您可以成为Ubuntu Server内核管理的专家,为组织的关键业务提供坚实的技术基础。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。