跳转至

13. 故障排查与性能优化

本章节指导在 RHEL 9(主机名 LinuxDC)上使用 SecureCRT 进行故障排查和性能优化,配合 SecureFX 传输日志文件。内容涵盖故障排查流程(日志分析、系统调用跟踪)、性能监控(sar, iostat, top)和系统优化(swappiness, I/O 调度器、cgroups),以 SSH(端口 2222,参考第 9 章)等案例为例,全面实用,适合初学者快速掌握和运维人员日常维护。所有操作在 LinuxDC 环境中测试,确保实验一致性。


13.1 前提条件

  • RHEL 9 已安装(参考第 1 章),主机名设置为 LinuxDC
  • 使用 SecureCRT 登录(SSH2 协议,端口 2222,参考第 9 章)。
  • 使用 SecureFX 传输文件(SFTP 协议)。
  • 具有 root 或 sudo 权限。
  • 系统已订阅并启用 RHEL 和 EPEL 仓库(参考第 2 和第 5 章)。
  • sshd 服务已配置(参考第 9 章)。

💡 提示:故障排查应从日志入手,性能优化需监控基线。在 RHEL 10 中,性能工具如 top 支持更多集成指标,如容器资源使用,提升混合环境诊断效率。


13.2 故障排查

13.2.1 日志分析

  • 查看服务日志:

    journalctl -u sshd --since "1 hour ago"  # 查看最近 1 小时 sshd 日志
    journalctl -p err -b  # 查看当前引导的错误日志
    

  • 系统日志:

    tail -f /var/log/messages  # 实时查看系统日志
    dmesg | grep error  # 查看内核错误
    

🧠 知识点:journalctl 是 systemd 日志工具,支持过滤(如 -u 服务、-p 优先级)。

13.2.2 系统调用跟踪

  • 使用 strace:

    strace -p <pid>  # 附加到进程跟踪调用
    strace ssh user@host  # 跟踪 SSH 命令
    

  • 使用 lsof:

    lsof -i :2222  # 查看占用 2222 端口进程
    lsof /path/to/file  # 查看打开文件进程
    

检查点:strace 输出显示系统调用,lsof 列出文件/端口使用。


13.3 性能监控

13.3.1 CPU 和内存监控

  • 使用 top/htop:

    top  # 交互式监控(按 1 查看 CPU 核心)
    htop  # 增强版(dnf install -y htop)
    

  • 进程排序:

    ps aux | sort -nrk 3 | head  # 高 CPU 进程
    free -h  # 内存使用
    

13.3.2 磁盘 I/O 监控

  • 使用 iostat:

    iostat -dx 5  # 每 5 秒显示扩展磁盘统计
    

  • 使用 sar:

    sar -u 1 5  # CPU 使用(1 秒间隔,5 次)
    sar -d 1 5  # 磁盘 I/O
    

💡 提示:安装 sysstat(dnf install -y sysstat)启用 sar。在 RHEL 10 中,sar 支持更多实时指标,如网络延迟分析。

13.3.3 生成诊断报告

  • 使用 sosreport:
    sos report --tmp-dir /tmp  # 生成系统报告
    

🧠 知识点:sosreport 收集日志、配置和状态,用于オフライン分析。


13.4 系统优化

13.4.1 调整 swappiness

  • 临时调整:

    sysctl vm.swappiness=10  # 设置为 10
    

  • 永久调整:

    vim /etc/sysctl.d/99-swappiness.conf
    # 添加:
    vm.swappiness=10
    sysctl --system  # 应用
    

13.4.2 I/O 调度器优化

  • 查看调度器:

    cat /sys/block/sda/queue/scheduler  # 查看当前
    

  • 设置 mq-deadline:

    echo mq-deadline > /sys/block/sda/queue/scheduler
    vim /etc/default/grub
    # 添加到 GRUB_CMDLINE_LINUX:
    elevator=mq-deadline
    grub2-mkconfig -o /boot/grub2/grub.cfg
    reboot
    

13.4.3 使用 cgroups

  • 创建 cgroup:
    mkdir /sys/fs/cgroup/memory/mygroup
    echo 100M > /sys/fs/cgroup/memory/mygroup/memory.limit_in_bytes
    echo <pid> > /sys/fs/cgroup/memory/mygroup/tasks  # 添加进程
    

检查点cat /sys/fs/cgroup/memory/mygroup/memory.usage_in_bytes 查看使用。

🧠 知识点:cgroups v2 在 RHEL 9 默认启用,支持统一层次结构。在 RHEL 10 中,cgroups v2 进一步优化,支持更多动态调整。


13.5 常见问题与排查

🔍 故障排查

  • 问题 1:SSH 连接失败
    解决journalctl -u sshd,检查防火墙(firewall-cmd --list-ports)、SELinux(ausearch -m avc)。

  • 问题 2:高负载
    解决top 识别进程,strace 分析瓶颈。

  • 问题 3:性能优化无效
    解决:确认 tuned-adm profile 或重启服务。


13.6 实践任务

  1. 使用 SecureCRT 通过 SSH(端口 2222)登录 LinuxDC,模拟 SSH 连接失败并排查(检查日志、防火墙、SELinux)。
  2. 使用 topiostat 监控 CPU 和磁盘 I/O,记录高负载进程。
  3. 配置 swappiness 为 10 并验证效果。
  4. 使用 sos report 生成系统诊断报告并传输至本地。

检查点:问题解决,性能指标正常,报告生成。


13.7 自测问题

  • 问题 1:如何排查服务失败?
    答案journalctl -u <service>, systemctl status <service>

  • 问题 2:如何找到高 CPU 进程?
    答案topps aux | sort -nrk 3 | head

  • 问题 3:如何调整 swappiness 永久生效?
    答案:编辑 /etc/sysctl.d/99-swappiness.conf,添加 vm.swappiness=10


🧾 总结
本章完整介绍了 RHEL 9 故障排查与性能优化的流程,包括日志分析、监控工具和优化技术。掌握这些方法可快速诊断问题,提升系统效率,为后续端口管理与数据存储提供优化基础。