1. 首页 > Linux教程 > 正文

Linux教程FG528-内核升级与性能调优

本文档风哥主要介绍Linux系统内核升级与性能调优的方法,包括内核升级策略、性能调优参数配置、监控工具使用等内容,风哥教程参考Linux官方文档System administration、Security等章节,适合系统管理员和DevOps工程师在生产环境中使用。

Part01-基础概念与理论知识

1.1 内核的概念与作用

内核是操作系统的核心部分,负责管理系统的硬件资源、进程调度、内存管理、文件系统等。内核的性能和稳定性直接影响整个系统的运行状态。

内核的主要作用:

  • 硬件管理:管理CPU、内存、磁盘、网络等硬件资源
  • 进程管理:负责进程的创建、调度和终止
  • 内存管理:管理系统内存的分配和回收
  • 文件系统:提供文件的存储和访问功能
  • 网络管理:处理网络协议和数据传输
  • 安全管理:提供系统安全和权限控制

1.2 内核版本管理

Linux内核版本号由主版本号、次版本号和修订版本号组成,如5.14.0-362.el9。其中:

  • 主版本号:表示内核的主要版本,如5
  • 次版本号:表示内核的次要版本,如14
  • 修订版本号:表示内核的补丁版本,如0
  • 发行版本号:表示发行商的特定版本,如362.el9

1.3 性能调优的概念与目标

学习交流加群风哥QQ113257174

性能调优是指通过调整系统参数和配置,提高系统的性能和响应速度。性能调优的目标包括:

  • 提高系统吞吐量:增加系统处理请求的能力
  • 降低响应时间:减少系统处理请求的时间
  • 提高资源利用率:充分利用系统的CPU、内存、磁盘等资源
  • 提高系统稳定性:减少系统崩溃和故障的发生
  • 降低能源消耗:减少系统的能源使用

风哥提示:

性能调优需要根据系统的具体应用场景和负载情况进行,不同的应用场景可能需要不同的调优策略。

Part02-生产环境规划与建议

2.1 内核升级策略

内核升级策略规划要点:

# 内核升级类型
– 安全补丁升级:修复安全漏洞,建议及时升级
– 功能增强升级:增加新功能,根据业务需求决定
– 性能优化升级:提升性能,根据性能需求决定
– 硬件支持升级:支持新硬件,根据硬件需求决定

# 内核升级时机
– 安全漏洞修复:立即升级
– 功能需求:在业务低峰期升级
– 性能优化:在业务低峰期升级
– 硬件支持:在硬件更换前升级

# 内核升级风险评估
– 兼容性风险:新内核可能与现有应用不兼容
– 稳定性风险:新内核可能存在稳定性问题
– 性能风险:新内核可能影响系统性能
– 回滚风险:升级失败后可能无法回滚

# 内核升级准备
– 备份系统数据和配置
– 测试环境验证
– 制定回滚计划
– 准备升级工具和介质
– 通知相关人员

2.2 性能调优策略

性能调优策略规划要点:

# 性能调优层次
– 硬件层:CPU、内存、磁盘、网络等硬件配置
– 系统层:内核参数、文件系统、服务配置等
– 应用层:应用程序配置、数据库优化等

# 性能调优步骤
1. 性能基准测试:建立性能基准
2. 性能瓶颈分析:找出性能瓶颈
3. 性能调优实施:调整系统参数
4. 性能验证:验证调优效果
5. 性能监控:持续监控系统性能

# 性能调优工具
– 系统监控:top、vmstat、iostat、netstat等
– 性能分析:perf、strace、ltrace等
– 内存分析:free、vmstat、pmap等
– 磁盘分析:iostat、iotop、df等
– 网络分析:netstat、ss、tcpdump等

# 性能调优原则
– 基于数据:根据实际性能数据进行调优
– 渐进式:逐步调整参数,避免一次性大改
– 验证效果:每次调优后验证效果
– 文档化:记录调优过程和结果
– 持续优化:定期评估和调整

2.3 风险评估与应对

风险评估与应对策略:

  • 兼容性风险:在测试环境验证新内核与现有应用的兼容性
  • 稳定性风险:在测试环境运行一段时间,观察系统稳定性
  • 性能风险:在测试环境进行性能测试,确保性能不下降
  • 回滚风险:备份当前内核和系统配置,准备回滚脚本
  • 业务中断风险:选择业务低峰期进行升级,提前通知相关人员
风哥针对生产环境建议:制定完善的内核升级和性能调优策略,确保系统的稳定性和性能。在升级前进行充分的测试和准备,制定详细的回滚计划,避免业务中断。

Part03-生产环境项目实施方案

3.1 内核升级实施方案

3.1.1 检查当前内核版本

# 检查当前内核版本
$ uname -r

5.14.0-362.el9.x86_64

# 检查系统版本
$ cat /etc/redhat-release

Red Hat Enterprise Linux release 9.3 (Plow)

# 检查可用的内核更新
$ sudo dnf check-update kernel

Last metadata expiration check: 0:00:10 ago on Wed Apr 5 10:00:00 2026.
Available Packages
kernel.x86_64 5.14.0-365.el9 baseos

3.1.2 升级内核

# 升级内核
$ sudo dnf update kernel -y

# 查看已安装的内核
$ sudo rpm -qa | grep kernel

kernel-5.14.0-362.el9.x86_64
kernel-5.14.0-365.el9.x86_64
kernel-core-5.14.0-362.el9.x86_64
kernel-core-5.14.0-365.el9.x86_64
kernel-modules-5.14.0-362.el9.x86_64
kernel-modules-5.14.0-365.el9.x86_64

# 配置默认启动内核
$ sudo grubby –default-kernel

/boot/vmlinuz-5.14.0-365.el9.x86_64

# 重启系统
$ sudo reboot

# 验证新内核
$ uname -r

5.14.0-365.el9.x86_64

3.1.3 回滚内核

# 查看所有可用内核
$ sudo grubby –info=ALL | grep -E “kernel|title”

index=0
kernel=/boot/vmlinuz-5.14.0-365.el9.x86_64
title=Red Hat Enterprise Linux (5.14.0-365.el9.x86_64) 9.3 (Plow)
index=1
kernel=/boot/vmlinuz-5.14.0-362.el9.x86_64
title=Red Hat Enterprise Linux (5.14.0-362.el9.x86_64) 9.3 (Plow)

# 设置默认启动内核为旧版本
$ sudo grubby –set-default=/boot/vmlinuz-5.14.0-362.el9.x86_64

The default is /boot/loader/entries/12345678-1234-1234-1234-1234567890ab.conf with index 1 and kernel /boot/vmlinuz-5.14.0-362.el9.x86_64

# 重启系统
$ sudo reboot

# 验证回滚后的内核
$ uname -r

5.14.0-362.el9.x86_64

3.2 性能调优实施方案

3.2.1 内存性能调优

# 查看内存使用情况
$ free -h

total used free shared buff/cache available
Mem: 31Gi 1.2Gi 28Gi 9.0Mi 1.5Gi 29Gi
Swap: 15Gi 0B 15Gi

# 配置大页内存
$ sudo vim /etc/sysctl.conf

# 大页内存配置
vm.nr_hugepages = 16384 # 16384个大页,每个大页2MB,共32GB

# 应用配置
$ sudo sysctl -p

# 验证大页配置
$ cat /proc/sys/vm/nr_hugepages

16384

# 关闭透明大页
$ sudo vim /etc/default/grub

GRUB_CMDLINE_LINUX=”crashkernel=auto resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet transparent_hugepage=never”

# 更新grub
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg

# 重启系统
$ sudo reboot

# 验证透明大页状态
$ cat /sys/kernel/mm/transparent_hugepage/enabled

always madvise [never]

3.2.2 磁盘I/O性能调优

# 查看磁盘I/O性能
$ iostat -x 1

Linux 5.14.0-365.el9.x86_64 (fgedu.net.cn) 04/05/2026 _x86_64_ (4 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 0.00 0.00 0.00 100.00

device r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

# 配置I/O调度器
$ sudo echo “deadline” > /sys/block/sda/queue/scheduler

# 验证I/O调度器
$ cat /sys/block/sda/queue/scheduler

[mq-deadline] kyber bfq none

# 配置文件系统挂载参数
$ sudo vim /etc/fstab

/dev/mapper/rhel-root / xfs defaults,noatime,nodiratime 0 0

# 重新挂载文件系统
$ sudo mount -o remount /

# 验证挂载参数
$ mount | grep /dev/mapper/rhel-root

/dev/mapper/rhel-root on / type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)

3.2.3 网络性能调优

# 查看网络连接状态
$ ss -s

Total: 1024 (kernel 1024)
TCP: 10 (estab 5, closed 2, orphaned 0, synrecv 0, timewait 2/0), ports 0

Transport Total IP IPv6
* 1024 – –
RAW 0 0 0
UDP 2 1 1
TCP 8 4 4
INET 10 5 5
FRAG 0 0 0

# 配置网络参数
$ sudo vim /etc/sysctl.conf

# 网络性能调优
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.ip_local_port_range = 1024 65535

# 应用配置
$ sudo sysctl -p

# 验证网络参数
$ sysctl net.core.somaxconn

net.core.somaxconn = 65535

3.3 性能监控实施方案

3.3.1 配置系统监控

# 安装监控工具
$ sudo dnf install htop sysstat nmon -y

# 启动sysstat服务
$ sudo systemctl start sysstat
$ sudo systemctl enable sysstat

# 配置sysstat采集间隔
$ sudo vim /etc/sysconfig/sysstat

# 修改采集间隔为1分钟
HISTORY=7
COMPRESSAFTER=1
SA1_OPTIONS=”-S DISK”
SA2_OPTIONS=”-s 00:00 -e 23:59 -i 60 -c”

# 重启sysstat服务
$ sudo systemctl restart sysstat

# 使用nmon监控系统性能
$ nmon

# 使用htop监控系统性能
$ htop

3.3.2 配置性能告警

# 创建性能告警脚本
$ sudo vim /usr/local/bin/performance-alert.sh

#!/bin/bash
# performance-alert.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`

# 检查CPU使用率
CPU_USAGE=$(top -bn1 | grep “Cpu(s)” | sed “s/.*, *\([0-9.]*\)%* id.*/\1/” | awk ‘{print 100 – $1}’)

# 检查内存使用率
MEM_TOTAL=$(free -m | grep Mem | awk ‘{print $2}’)
MEM_USED=$(free -m | grep Mem | awk ‘{print $3}’)
MEM_USAGE=$((MEM_USED * 100 / MEM_TOTAL))

# 检查磁盘使用率
DISK_USAGE=$(df -h | grep /dev/mapper/rhel-root | awk ‘{print $5}’ | sed ‘s/%//’)

# 检查网络连接数
TCP_CONN=$(ss -s | grep “TCP:” | awk ‘{print $2}’)

# 告警阈值
CPU_THRESHOLD=80
MEM_THRESHOLD=80
DISK_THRESHOLD=80
TCP_THRESHOLD=1000

# 发送告警
if [ $(echo “$CPU_USAGE > $CPU_THRESHOLD” | bc) -eq 1 ]; then
echo “CPU使用率过高: $CPU_USAGE%” | mail -s “性能告警: CPU使用率过高” admin@fgedu.net.cn
fi

if [ $MEM_USAGE -gt $MEM_THRESHOLD ]; then
echo “内存使用率过高: $MEM_USAGE%” | mail -s “性能告警: 内存使用率过高” admin@fgedu.net.cn
fi

if [ $DISK_USAGE -gt $DISK_THRESHOLD ]; then
echo “磁盘使用率过高: $DISK_USAGE%” | mail -s “性能告警: 磁盘使用率过高” admin@fgedu.net.cn
fi

if [ $TCP_CONN -gt $TCP_THRESHOLD ]; then
echo “TCP连接数过高: $TCP_CONN” | mail -s “性能告警: TCP连接数过高” admin@fgedu.net.cn
fi

# 赋予执行权限
$ sudo chmod +x /usr/local/bin/performance-alert.sh

# 配置定时执行
$ sudo crontab -e

*/5 * * * * /usr/local/bin/performance-alert.sh

风哥提示:

性能监控是性能调优的重要组成部分,通过持续监控系统性能,及时发现性能问题并采取相应措施,确保系统的稳定运行。

Part04-生产案例与实战讲解

4.1 内核升级案例

4.1.1 生产服务器内核升级

# 场景:生产服务器需要升级内核以修复安全漏洞

# 1. 准备工作
– 备份系统数据和配置
– 在测试环境验证新内核
– 制定升级计划和回滚计划

# 2. 执行升级
$ sudo dnf update kernel -y

# 3. 验证升级
$ uname -r

5.14.0-365.el9.x86_64

# 4. 检查系统状态
$ sudo systemctl status

# 5. 运行应用测试
$ curl http://localhost

# 6. 监控系统性能
$ top

# 7. 记录升级过程
– 升级前内核版本:5.14.0-362.el9.x86_64
– 升级后内核版本:5.14.0-365.el9.x86_64
– 升级时间:2026-04-05 10:00
– 升级结果:成功
– 系统状态:正常
– 应用状态:正常

4.2 内存性能调优案例

4.2.1 数据库服务器内存调优

# 场景:数据库服务器内存使用率高,需要优化内存配置

# 1. 分析内存使用情况
$ free -h

total used free shared buff/cache available
Mem: 63Gi 50Gi 10Gi 9.0Mi 2.5Gi 10Gi
Swap: 31Gi 1.2Gi 30Gi

# 2. 配置大页内存
$ sudo vim /etc/sysctl.conf

# 大页内存配置(根据数据库SGA大小调整)
vm.nr_hugepages = 32768 # 32768个大页,每个大页2MB,共64GB

# 3. 应用配置
$ sudo sysctl -p

# 4. 关闭透明大页
$ sudo vim /etc/default/grub

GRUB_CMDLINE_LINUX=”crashkernel=auto resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet transparent_hugepage=never”

# 5. 更新grub
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg

# 6. 重启系统
$ sudo reboot

# 7. 验证内存配置
$ cat /proc/sys/vm/nr_hugepages

32768

$ cat /sys/kernel/mm/transparent_hugepage/enabled

always madvise [never]

# 8. 测试数据库性能
$ mysql -u root -p123456 -e “SELECT benchmark(1000000, md5(‘test’));”

+—————————-+
| benchmark(1000000, md5(‘test’)) |
+—————————-+
| 0 |
+—————————-+
1 row in set (0.32 sec)

# 9. 监控内存使用情况
$ free -h

total used free shared buff/cache available
Mem: 63Gi 52Gi 8Gi 9.0Mi 2.5Gi 8Gi
Swap: 31Gi 1.2Gi 30Gi

4.3 磁盘I/O性能调优案例

4.3.1 文件服务器磁盘I/O调优

# 场景:文件服务器磁盘I/O性能不足,需要优化磁盘配置

# 1. 分析磁盘I/O性能
$ iostat -x 1

Linux 5.14.0-365.el9.x86_64 (fgedu.net.cn) 04/05/2026 _x86_64_ (4 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
学习交流加群风哥微信: itpux-com 5.00 0.00 3.00 10.00 0.00 82.00

device r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 50.00 20.00 1.00 0.50 40.00 1.00 14.00 10.00 20.00 2.00 14.00

# 2. 配置I/O调度器
$ sudo echo “deadline” > /sys/block/sda/queue/scheduler

# 3. 验证I/O调度器
$ cat /sys/block/sda/queue/scheduler

[mq-deadline] kyber bfq none

# 4. 配置文件系统挂载参数
$ sudo vim /etc/fstab

/dev/mapper/rhel-data /data xfs defaults,noatime,nodiratime 0 0

# 5. 重新挂载文件系统
$ sudo mount -o remount /data

# 6. 测试磁盘I/O性能
$ dd if=/dev/zero of=/data/test bs=1M count=1000 oflag=direct

1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB, 1000 MiB) copied, 10.000000 s, 104.9 MB/s

# 7. 监控磁盘I/O性能
$ iostat -x 1

Linux 5.14.0-365.el9.x86_64 (fgedu.net.cn) 04/05/2026 _x86_64_ (4 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
3.00 0.00 2.00 5.00 0.00 90.00

device r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_awai更多学习教程公众号风哥教程itpux_comt w_await svctm %util
sda 40.00 15.00 0.80 0.30 45.00 0.50 8.00 6.00 12.00 1.50 8.00

4.4 网络性能调优案例

4.4.1 Web服务器网络调优

# 场景:Web服务器并发连接数高,需要优化网络配置

# 1. 分析网络连接状态
$ ss -s

Total: 2048 (kernel 2048)
TCP: 1000 (estab 800, closed 150, orphaned 0, synrecv 50, timewait 50/0), ports 0

Transport Total IP IPv6
* 2048 – –
RAW 0 0 0
UDP 2 1 1
TCP 850 400 450
INET 852 401 451
FRAG 0 0 0

# 2. 配置网络参数
$ sudo vim /etc/sysctl.conf

# 网络性能调优
net.core.somaxconn = 16384
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_fin_timeout = 20
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 10
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 1024 65535

# 3. 应用配置
$ sudo sysctl -p

# 4. 测试网络性能
$ ab -n 10000 -c 100 http://localhost/

This is ApacheBench, Version 2.3 <$Revision: 1879490 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests

Server Software: Apache/2.4.53
Server Hostname: localhost
Server Port: 80

Document Path: /
Document Length: 483 bytes

Concurrency Level: 100
Time taken for tests: 10.000000 seconds
Complete requests: 10000
Failed requests: 0
Total transferred: 7830000 bytes
HTML transferred: 4830000 bytes
Requests per second: 1000.00 [#/sec] (mean)
Time per request: 100.000 [ms] (mean)
Time per request: 1.000 [ms] (mean, across all concurrent requests)
Transfer rate: 764.65 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 0.5 1 5
Processing: 5 98 5.0 98 110
Waiting: 4 97 5.0 97 109
Total: 5 99 5.0 99 115

# 5. 监控网络连接状态
$ ss -s

Total: 2048 (kernel 2048)
TCP: 1200 (estab 900, closed 200, orphaned 0, synrecv 50, timewait 50/0), ports 0

Transport Total IP IPv6
* 2048 – –
RAW 0 0 0
UDP 2 1 1
TCP 1000 500 500
INET 1002 501 501
FRAG 0 0 0

风哥针对生产环境建议:根据系统的具体应用场景和负载情况,选择合适的性能调优策略,逐步调整参数并验证效果,确保系统的性能和稳定性。from Linux:www.itpux.com

Part05-风哥经验总结与分享

5.1 内核升级最佳实践

内核升级最佳实践:

  • 充分测试:在测试环境验证新内核的兼容性和稳定性
  • 备份系统:升级前备份系统数据和配置,确保可以回滚
  • 选择时机:在业务低峰期进行升级,减少业务影响
  • 制定计划:制定详细的升级计划和回滚计划
  • 监控系统:升级后密切监控系统状态和应用运行情况
  • 及时更新:及时安装安全补丁和重要更新
  • 文档记录:记录升级过程和结果,便于后续参考

5.2 性能调优最佳实践

性能调优最佳实践:

from PG视频:www.itpux.com

  • 基于数据:根据实际性能数据进行调优,避免盲目调整
  • 渐进式调优:逐步调整参数,每次调整后验证效果
  • 综合考虑:从硬件、系统、应用多个层面进行调优
  • 监控先行:建立完善的性能监控体系,及时发现性能问题
  • 文档化:记录调优过程和结果,便于后续参考和重复
  • 持续优化:定期评估系统性能,持续调整和优化
  • 安全第一:在调优过程中确保系统安全,避免引入安全风险

5.3 常见问题排查技巧

常见内核和性能问题排查技巧:

  • 内核启动失败:检查grub配置、内核参数、硬件兼容性
  • 系统性能下降:使用top、vmstat、iostat等工具分析性能瓶颈
  • 应用崩溃:检查应用日志、内核日志、系统资源使用情况
  • 内存泄漏:使用valgrind、pmap等工具分析内存使用情况
  • 磁盘I/O瓶颈:使用iostat、iotop等工具分析磁盘I/O性能
  • 网络连接问题:使用netstat、ss、tcpdump等工具分析网络状态
  • 内核panic:检查系统日志、内存转储,分析panic原因

风哥提示:

内核升级和性能调优是系统管理的重要任务,需要谨慎操作,充分测试,确保系统的稳定性和性能。在实际操作中,应根据系统的具体情况和业务需求,选择合适的策略和方法。

持续改进:随着业务的发展和技术的进步,系统的性能需求也会不断变化,需要定期评估和调整内核版本和性能参数,确保系统能够满足业务需求。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息