关注「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. CPU分析:
perf top发现kernel态占用过高 - 2. 内存分析: 发现大量page cache未及时回写
解决方案:
# 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
优化效果:
🔧 一键优化脚本
#!/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系统性能。记住几个关键点:
为了方便大家更好的交流运维等相关技术问题,创建了微信交流群,需要加群的小伙伴们可以扫一扫下面的二维码加我为好友拉您进群(备注:加群)。

| 代码仓库 | 网址 |
| Github | https://github.com/raymond999999 |
| Gitee | https://gitee.com/raymond9 |
| 博客 | 网址 |
| 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 |
访问博客网站,查看更多优质原创内容。