当前位置: 首页 > news >正文

运维打铁: 系统内核参数调优实战

文章目录

    • 思维导图
    • 引言
    • 常见内核参数及作用
      • 网络相关参数
      • 内存相关参数
      • 文件系统相关参数
    • 调优实战步骤
      • 环境评估
      • 参数调整
        • 临时调整
        • 永久调整
      • 效果验证
    • 代码举例
      • 临时调整参数
      • 永久调整参数
    • 注意事项与总结
      • 注意事项
      • 总结

思维导图

    A[内核参数调优] --> B[网络参数]A --> C[文件系统参数]A --> D[内存管理参数]A --> E[进程调度参数]A --> F[安全相关参数]B --> B1[TCP/IP栈优化]B --> B2[连接数限制]B --> B3[缓冲区大小]C --> C1[文件描述符限制]C --> C2[inode缓存]C --> C3[文件系统缓存]D --> D1[Swappiness]D --> D2[内存分配策略]D --> D3[透明大页]E --> E1[进程优先级]E --> E2[CPU亲和性]E --> E3[调度策略]F --> F1[SELinux/AppArmor]F --> F2[内核模块限制]F --> F3[ASLR设置]

在这里插入图片描述

引言

在运维工作中,系统内核参数调优是一项至关重要的技能。合理的内核参数设置可以显著提升系统的性能和稳定性,充分发挥硬件资源的潜力。通过对内核参数的精细调整,我们可以优化网络通信、内存管理和文件系统操作等方面,从而满足不同业务场景的需求。

常见内核参数及作用

网络相关参数

  • net.ipv4.tcp_max_syn_backlog:该参数定义了 TCP 连接请求队列的最大长度。当系统接收到大量的 SYN 请求时,适当增大该参数可以避免队列溢出,减少丢包现象。
  • net.ipv4.tcp_tw_reuse:允许将处于 TIME-WAIT 状态的套接字重新用于新的 TCP 连接,提高端口的利用率。
  • net.ipv4.tcp_tw_recycle:开启后可以快速回收处于 TIME-WAIT 状态的套接字,但在某些网络环境下可能会引发问题,使用时需要谨慎。

内存相关参数

  • vm.swappiness:控制内存使用达到一定阈值时,系统将内存数据交换到磁盘交换空间(swap)的倾向程度。取值范围为 0 - 100,值越小,系统越倾向于使用物理内存。
  • vm.dirty_ratio:当系统中脏页(即已修改但尚未写入磁盘的页面)的比例达到该参数设定的值时,内核会开始将脏页写入磁盘。
  • vm.dirty_background_ratio:指定系统在后台开始将脏页写入磁盘的脏页比例阈值。

文件系统相关参数

  • fs.file-max:限制系统可以同时打开的文件句柄的最大数量。在处理大量文件操作的场景下,适当增大该参数可以避免文件打开失败的问题。
  • fs.inotify.max_user_watches:设置每个用户可以监控的文件系统事件数量上限。在使用 inotify 机制进行文件监控时,可能需要调整该参数。

调优实战步骤

环境评估

  • 系统负载分析:使用 tophtop 等工具实时监控系统的 CPU 使用率、负载平均值等指标,了解系统的整体负载情况。
  • 网络流量监测:通过 iftopnethogs 等工具分析网络接口的流量情况,找出流量瓶颈和异常流量。
  • 内存使用情况检查:使用 freevmstat 等命令查看系统的内存使用情况,包括物理内存、交换空间的使用量和剩余量。

参数调整

临时调整

临时调整的参数在系统重启后会恢复到默认值。可以使用 sysctl 命令进行临时调整,例如:

# 临时调整 tcp_max_syn_backlog 参数
sysctl -w net.ipv4.tcp_max_syn_backlog=4096
永久调整

为了使参数在系统重启后仍然生效,需要修改 /etc/sysctl.conf 文件。例如,将 net.ipv4.tcp_max_syn_backlog 参数永久设置为 4096:

# 编辑 /etc/sysctl.conf 文件
vi /etc/sysctl.conf# 在文件中添加或修改以下行
net.ipv4.tcp_max_syn_backlog = 4096# 使配置生效
sysctl -p

效果验证

  • 性能指标对比:在参数调整前后,分别记录系统的性能指标,如 CPU 使用率、网络吞吐量、内存使用率等,对比分析调优效果。
  • 稳定性测试:在一段时间内对系统进行稳定性测试,观察系统是否出现异常情况,如崩溃、死机、丢包等。

代码举例

临时调整参数

# 临时调整网络参数
sysctl -w net.ipv4.tcp_max_syn_backlog=4096
sysctl -w net.ipv4.tcp_tw_reuse=1
sysctl -w net.ipv4.tcp_tw_recycle=0# 临时调整内存参数
sysctl -w vm.swappiness=10
sysctl -w vm.dirty_ratio=40
sysctl -w vm.dirty_background_ratio=10# 临时调整文件系统参数
sysctl -w fs.file-max=1000000
sysctl -w fs.inotify.max_user_watches=524288

永久调整参数

# 编辑 /etc/sysctl.conf 文件
cat << EOF >> /etc/sysctl.conf
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
vm.swappiness = 10
vm.dirty_ratio = 40
vm.dirty_background_ratio = 10
fs.file-max = 1000000
fs.inotify.max_user_watches = 524288
EOF# 使配置生效
sysctl -p

注意事项与总结

注意事项

  • 备份原始参数:在进行参数调整之前,务必备份 /etc/sysctl.conf 文件,以便在出现问题时可以恢复到原始配置。
  • 逐步调整参数:不要一次性修改多个参数,应该逐个调整并观察系统的反应,以便准确判断每个参数的影响。
  • 监控系统反应:在参数调整过程中,密切监控系统的性能指标和运行状态,及时发现并解决可能出现的问题。

总结

系统内核参数调优是一项复杂而又关键的运维工作,通过合理调整内核参数,可以有效提升系统的性能和稳定性。在实际操作中,我们需要根据系统的具体情况和业务需求,有针对性地选择和调整参数。同时,要保持持续优化的意识,不断根据系统的运行状况进行调整和改进,以确保系统始终处于最佳运行状态。

希望通过本文的介绍,你对系统内核参数调优有了更深入的了解,并能够在实际工作中运用这些知识进行有效的调优实践。

http://www.lqws.cn/news/515359.html

相关文章:

  • ‌RESTful API 设计规范
  • 无锁队列简易入门
  • Sivers毫米波产品系列全景图:覆盖通信、工业、交通、航天
  • Xcode缓存清除
  • 鸿蒙Next仓颉开发语言中的数据类型总结分享
  • java 导出word 实现循环表格
  • 配置有nvlink的H20使用pytorch报错
  • 在树莓派上用 .NET8.0 挂载TCP服务端
  • React ref 和 JS 对象的区别
  • Linux系统之Tomcat服务
  • django csrf的局限性
  • 亚远景-ASPICE与ISO 26262:汽车安全与软件质量的协同
  • 云原生灰度方案对比:服务网格灰度(Istio ) 与 K8s Ingress 灰度(Nginx Ingress )
  • 【Pandas】pandas DataFrame asfreq
  • stm32week17+18+19+20
  • IP-GUARD外设以及网络禁用策略制定
  • ubuntu22.04可以执行sudo命令,但不在sudo组
  • 学习日记-spring-day37-6.25
  • NETCONF 典型工作流程
  • Spark 之 UT
  • 新能源汽车电池类型差异分析
  • 网络安全漏洞扫描是什么?如何识别目标进行扫描?
  • LangGraph--基础学习(Subgraphs 子图)
  • easy-caffeine一个简洁灵活易用基于caffeine的本地缓存框架
  • dovi交叉编译方法(编译libdovi.so)
  • PyTorch 入门之官方文档学习笔记(二)训练分类器
  • 利用Pytorch玩一玩文生图的HDGAN
  • 长尾关键词SEO优化高效策略
  • 微信小程序安卓手机输入框文字飘出输入框
  • 【服务器】服务器选型设计