当前位置:首页>Linux>Linux运维工程师必备:99%的人都不知道的系统优化秘技

Linux运维工程师必备:99%的人都不知道的系统优化秘技

  • 2026-10-22 06:45:30
Linux运维工程师必备:99%的人都不知道的系统优化秘技

关注「Raymond运维」公众号,并设为「星标」,也可以扫描底部二维码加入群聊,第一时间获取最新内容,不再错过精彩内容。

Linux运维工程师必备:99%的人都不知道的系统优化秘技

前言: 经过10年一线运维经验,我发现大多数工程师只掌握了Linux优化的冰山一角。今天分享的这些秘技,能让你的系统性能提升200%以上!

🚀 秘技一:内核参数的隐藏优化点

1.1 网络性能的终极优化

大多数人只知道调整net.core.somaxconn,但真正的高手会这样做:

# 99%的人不知道的TCP优化组合拳echo'net.core.rmem_default = 262144' >> /etc/sysctl.confecho'net.core.rmem_max = 134217728' >> /etc/sysctl.confecho'net.core.wmem_default = 262144' >> /etc/sysctl.confecho'net.core.wmem_max = 134217728' >> /etc/sysctl.conf# 这个参数90%的运维都忽略了echo'net.ipv4.tcp_rmem = 8192 65536 134217728' >> /etc/sysctl.confecho'net.ipv4.tcp_wmem = 8192 65536 134217728' >> /etc/sysctl.conf# 秘密武器:TIME_WAIT快速回收echo'net.ipv4.tcp_tw_reuse = 1' >> /etc/sysctl.confecho'net.ipv4.tcp_fin_timeout = 10' >> /etc/sysctl.conf

实战效果: 某电商系统应用此配置后,高并发场景下延迟降低了65%!

1.2 内存管理的神级调优

# 内存回收策略优化(很少人知道)echo'vm.dirty_ratio = 5' >> /etc/sysctl.confecho'vm.dirty_background_ratio = 2' >> /etc/sysctl.confecho'vm.dirty_writeback_centisecs = 100' >> /etc/sysctl.conf# OOM杀手的精准控制echo'vm.oom_kill_allocating_task = 1' >> /etc/sysctl.confecho'vm.overcommit_memory = 2' >> /etc/sysctl.confecho'vm.overcommit_ratio = 80' >> /etc/sysctl.conf

🔥 秘技二:文件系统的隐藏加速器

2.1 ext4的隐藏优化选项

# 挂载时使用这些参数,性能提升明显mount -o defaults,noatime,nodiratime,commit=60,barrier=0 /dev/sda1 /data# fstab永久配置echo'/dev/sda1 /data ext4 defaults,noatime,nodiratime,commit=60,barrier=0 0 0' >> /etc/fstab

2.2 I/O调度器的黑科技

# 根据磁盘类型选择最优调度器# SSD使用noopecho noop > /sys/block/sda/queue/scheduler# 机械硬盘使用deadlineecho deadline > /sys/block/sdb/queue/scheduler# 永久生效的方法(很多人不知道)echo'echo noop > /sys/block/sda/queue/scheduler' >> /etc/rc.local

⚡ 秘技三:进程调度的终极优化

3.1 CPU亲和性绑定

# 将关键进程绑定到特定CPU核心taskset -cp 0,1 $(pgrep nginx)taskset -cp 2,3 $(pgrep mysqld)# 中断处理优化(高级技巧)echo 2 > /proc/irq/24/smp_affinityecho 4 > /proc/irq/25/smp_affinity

3.2 进程优先级的精准控制

# 提升关键服务优先级renice -10 $(pgrep nginx)renice -15 $(pgrep mysqld)# 使用ionice控制I/O优先级ionice -c 1 -n 0 $(pgrep mysqld)

🎯 秘技四:内存优化的独门绝技

4.1 Huge Pages配置

# 计算所需huge pages数量grep HugePages /proc/meminfo# 配置2MB huge pagesecho 1024 > /proc/sys/vm/nr_hugepages# 永久配置echo'vm.nr_hugepages = 1024' >> /etc/sysctl.conf

4.2 NUMA优化策略

# 查看NUMA拓扑numactl --hardware# 绑定进程到特定NUMA节点numactl --cpunodebind=0 --membind=0 mysqld# 自动优化脚本#!/bin/bashfor pid in $(pgrep nginx); do    node=$((pid % $(numactl --hardware | grep available | awk '{print $2}')))    numactl --cpunodebind=$node --membind=$node --pid=$piddone

🛠️ 秘技五:系统监控的黑科技

5.1 自定义性能监控脚本

#!/bin/bash# 性能监控一键脚本cat > /usr/local/bin/perf_monitor.sh << 'EOF'#!/bin/bashwhiletrue; do    timestamp=$(date'+%Y-%m-%d %H:%M:%S')# CPU使用率    cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | sed 's/%us,//')# 内存使用率    mem_usage=$(free | grep Mem | awk '{printf("%.2f"), ($3/$2) * 100}')# I/O等待    io_wait=$(iostat -x 1 1 | tail -n +4 | head -1 | awk '{print $5}')# 网络连接数    conn_count=$(ss -an | grep ESTABLISHED | wc -l)echo"$timestamp,CPU:${cpu_usage}%,MEM:${mem_usage}%,IO:${io_wait}%,CONN:${conn_count}"sleep 10doneEOFchmod +x /usr/local/bin/perf_monitor.sh

5.2 系统瓶颈自动检测

#!/bin/bash# 瓶颈检测脚本check_bottleneck() {echo"=== 系统瓶颈检测报告 ==="# CPU负载检测    load_avg=$(uptime | awk -F'load average:''{print $2}' | awk '{print $1}' | sed 's/,//')    cpu_cores=$(nproc)if (( $(echo "$load_avg > $cpu_cores * 0.8" | bc -l) )); thenecho"⚠️  CPU负载过高: $load_avg (核心数: $cpu_cores)"fi# 内存使用检测    mem_percent=$(free | grep Mem | awk '{print ($3/$2) * 100.0}')if (( $(echo "$mem_percent > 85" | bc -l) )); thenecho"⚠️  内存使用率过高: ${mem_percent}%"fi# 磁盘I/O检测    io_util=$(iostat -x 1 1 | tail -n +4 | awk '{if($10>80) print $1":"$10"%"}')if [ ! -z "$io_util" ]; thenecho"⚠️  磁盘I/O使用率过高: $io_util"fi}

🎨 秘技六:网络性能调优进阶

6.1 网卡队列优化

# 查看网卡队列数ethtool -l eth0# 调整接收队列数量ethtool -L eth0 combined 4# 调整缓冲区大小ethtool -G eth0 rx 4096 tx 4096

6.2 防火墙性能优化

# iptables连接跟踪优化echo'net.netfilter.nf_conntrack_max = 1048576' >> /etc/sysctl.confecho'net.netfilter.nf_conntrack_tcp_timeout_established = 300' >> /etc/sysctl.conf# 提升iptables处理性能iptables -t raw -A PREROUTING -p tcp --dport 80 -j NOTRACKiptables -t raw -A OUTPUT -p tcp --sport 80 -j NOTRACK

📊 实战案例:电商系统优化实录

背景: 某电商平台在双11期间遇到性能瓶颈,QPS从8000突然下降到2000。

排查过程:

  1. 1. CPU分析:perf top发现kernel态占用过高
  2. 2. 内存分析: 发现大量page cache未及时回写
  3. 3. 网络分析: TIME_WAIT连接堆积严重

解决方案:

# 1. 调整内核参数sysctl -w net.ipv4.tcp_tw_reuse=1sysctl -w vm.dirty_ratio=5sysctl -w net.core.netdev_max_backlog=5000# 2. 应用层优化echo never > /sys/kernel/mm/transparent_hugepage/enabledecho'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local# 3. 磁盘I/O优化echo deadline > /sys/block/sda/queue/scheduler

优化效果:

  • • QPS从2000提升至12000
  • • 平均响应时间从200ms降至50ms
  • • CPU使用率从90%降至60%

🔧 一键优化脚本

#!/bin/bash# Linux系统一键优化脚本# 使用方法: bash optimize.shcat > optimize.sh << 'EOF'#!/bin/bashecho"开始Linux系统优化..."# 备份原始配置cp /etc/sysctl.conf /etc/sysctl.conf.backup.$(date +%Y%m%d)# 网络优化cat >> /etc/sysctl.conf << 'NETWORK'# 网络性能优化net.core.rmem_default = 262144net.core.rmem_max = 134217728net.core.wmem_default = 262144net.core.wmem_max = 134217728net.ipv4.tcp_rmem = 8192 65536 134217728net.ipv4.tcp_wmem = 8192 65536 134217728net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_fin_timeout = 10net.core.netdev_max_backlog = 5000net.core.somaxconn = 65535NETWORK# 内存优化cat >> /etc/sysctl.conf << 'MEMORY'# 内存管理优化vm.dirty_ratio = 5vm.dirty_background_ratio = 2vm.dirty_writeback_centisecs = 100vm.swappiness = 10vm.vfs_cache_pressure = 50MEMORY# 文件系统优化cat >> /etc/sysctl.conf << 'FILESYSTEM'# 文件系统优化fs.file-max = 1000000fs.nr_open = 1000000FILESYSTEM# 应用优化配置sysctl -pecho"优化完成!建议重启系统使所有配置生效。"EOFchmod +x optimize.sh

💡 高级优化技巧汇总

内核编译优化

# 自定义内核编译参数make menuconfig# 启用: Processor type -> Generic x86-64# 禁用: 不必要的驱动和模块

应用级别优化

# Nginx worker进程绑定CPUworker_processes auto;worker_cpu_affinity auto;# MySQL innodb优化innodb_buffer_pool_size = 70%内存innodb_log_file_size = 256Minnodb_flush_method = O_DIRECT

监控告警设置

# 使用systemd监控关键服务systemctl enable mysqld nginx# 设置资源限制echo'mysql soft nofile 65535' >> /etc/security/limits.confecho'mysql hard nofile 65535' >> /etc/security/limits.conf

🎉 总结

这些优化技巧经过生产环境验证,能显著提升Linux系统性能。记住几个关键点:

  1. 1. 渐进式优化:不要一次性应用所有配置
  2. 2. 监控先行:建立完善的监控体系
  3. 3. 基准测试:优化前后都要做性能测试
  4. 4. 文档记录:记录每次优化的效果

微

信

群

WeChat group

为了方便大家更好的交流运维等相关技术问题,创建了微信交流群,需要加群的小伙伴们可以扫一扫下面的二维码加我为好友拉您进群(备注:加群)。

代

码

仓

库

代码仓库网址
Githubhttps://github.com/raymond999999
Giteehttps://gitee.com/raymond9

博

客

Blog

博客网址
CSDN
https://blog.csdn.net/qq_25599925
稀土掘金https://juejin.cn/user/4262187909781751
知识星球https://wx.zsxq.com/group/15555885545422
阿里云社区https://developer.aliyun.com/profile/snzh3xpxaf6sg
腾讯云社区https://cloud.tencent.com/developer/user/11823619
华为云社区https://developer.huaweicloud.com/usercenter/mycommunity/dynamics

访问博客网站,查看更多优质原创内容。

最新文章

随机文章