前言:经过10年一线运维经验,我发现大多数工程师只掌握了Linux优化的冰山一角。今天分享的这些秘技,能让你的系统性能提升200%以上!
秘技一:内核参数的隐藏优化点
1.1 网络性能的终极优化
大多数人只知道调整net.core.somaxconn,但真正的高手会这样做:
# 99%的人不知道的TCP优化组合拳 echo'net.core.rmem_default = 262144'>> /etc/sysctl.conf echo'net.core.rmem_max = 134217728'>> /etc/sysctl.conf echo'net.core.wmem_default = 262144'>> /etc/sysctl.conf echo'net.core.wmem_max = 134217728'>> /etc/sysctl.conf # 这个参数90%的运维都忽略了 echo'net.ipv4.tcp_rmem = 8192 65536 134217728'>> /etc/sysctl.conf echo'net.ipv4.tcp_wmem = 8192 65536 134217728'>> /etc/sysctl.conf # 秘密武器:TIME_WAIT快速回收 echo'net.ipv4.tcp_tw_reuse = 1'>> /etc/sysctl.conf echo'net.ipv4.tcp_fin_timeout = 10'>> /etc/sysctl.conf
实战效果:某电商系统应用此配置后,高并发场景下延迟降低了65%!
1.2 内存管理的神级调优
# 内存回收策略优化(很少人知道) echo'vm.dirty_ratio = 5'>> /etc/sysctl.conf echo'vm.dirty_background_ratio = 2'>> /etc/sysctl.conf echo'vm.dirty_writeback_centisecs = 100'>> /etc/sysctl.conf # OOM杀手的精准控制 echo'vm.oom_kill_allocating_task = 1'>> /etc/sysctl.conf echo'vm.overcommit_memory = 2'>> /etc/sysctl.conf echo'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使用noop echonoop > /sys/block/sda/queue/scheduler # 机械硬盘使用deadline echodeadline > /sys/block/sdb/queue/scheduler # 永久生效的方法(很多人不知道) echo'echo noop > /sys/block/sda/queue/scheduler'>> /etc/rc.local
秘技三:进程调度的终极优化
3.1 CPU亲和性绑定
# 将关键进程绑定到特定CPU核心 taskset -cp0,1 $(pgrep nginx) taskset -cp2,3 $(pgrep mysqld) # 中断处理优化(高级技巧) echo2 > /proc/irq/24/smp_affinity echo4 > /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 pages echo1024 > /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/bash forpidin$(pgrep nginx);do node=$((pid % $(numactl --hardware | grep available | awk '{print$2}'))) numactl --cpunodebind=$node--membind=$node--pid=$pid done
秘技五:系统监控的黑科技
5.1 自定义性能监控脚本
#!/bin/bash # 性能监控一键脚本 cat> /usr/local/bin/perf_monitor.sh << 'EOF' #!/bin/bash whiletrue; 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 10 done EOF chmod +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) ));then
echo" CPU负载过高:$load_avg(核心数:$cpu_cores)"
fi
# 内存使用检测
mem_percent=$(free | grep Mem | awk'{print ($3/$2) * 100.0}')
if(( $(echo "$mem_percent>85" | bc -l) ));then
echo" 内存使用率过高:${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"];then
echo" 磁盘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.conf echo'net.netfilter.nf_conntrack_tcp_timeout_established = 300'>> /etc/sysctl.conf # 提升iptables处理性能 iptables -t raw -A PREROUTING -p tcp --dport 80 -j NOTRACK iptables -t raw -A OUTPUT -p tcp --sport 80 -j NOTRACK
实战案例:电商系统优化实录
背景:某电商平台在双11期间遇到性能瓶颈,QPS从8000突然下降到2000。
排查过程:
1.CPU分析:perf top发现kernel态占用过高
2.内存分析:发现大量page cache未及时回写
3.网络分析:TIME_WAIT连接堆积严重
解决方案:
# 1. 调整内核参数 sysctl -w net.ipv4.tcp_tw_reuse=1 sysctl -w vm.dirty_ratio=5 sysctl -w net.core.netdev_max_backlog=5000 # 2. 应用层优化 echonever > /sys/kernel/mm/transparent_hugepage/enabled echo'echo never > /sys/kernel/mm/transparent_hugepage/enabled'>> /etc/rc.local # 3. 磁盘I/O优化 echodeadline > /sys/block/sda/queue/scheduler
优化效果:
• QPS从2000提升至12000
• 平均响应时间从200ms降至50ms
• CPU使用率从90%降至60%
一键优化脚本
#!/bin/bash # Linux系统一键优化脚本 # 使用方法: bash optimize.sh cat> optimize.sh << 'EOF' #!/bin/bash echo"开始Linux系统优化..." # 备份原始配置 cp /etc/sysctl.conf /etc/sysctl.conf.backup.$(date +%Y%m%d) # 网络优化 cat >> /etc/sysctl.conf << 'NETWORK' # 网络性能优化 net.core.rmem_default = 262144 net.core.rmem_max = 134217728 net.core.wmem_default = 262144 net.core.wmem_max = 134217728 net.ipv4.tcp_rmem = 8192 65536 134217728 net.ipv4.tcp_wmem = 8192 65536 134217728 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_fin_timeout = 10 net.core.netdev_max_backlog = 5000 net.core.somaxconn = 65535 NETWORK # 内存优化 cat >> /etc/sysctl.conf << 'MEMORY' # 内存管理优化 vm.dirty_ratio = 5 vm.dirty_background_ratio = 2 vm.dirty_writeback_centisecs = 100 vm.swappiness = 10 vm.vfs_cache_pressure = 50 MEMORY # 文件系统优化 cat >> /etc/sysctl.conf << 'FILESYSTEM' # 文件系统优化 fs.file-max = 1000000 fs.nr_open = 1000000 FILESYSTEM # 应用优化配置 sysctl -p echo"优化完成!建议重启系统使所有配置生效。" EOF chmod +x optimize.sh
高级优化技巧汇总
内核编译优化
# 自定义内核编译参数 make menuconfig # 启用: Processor type -> Generic x86-64 # 禁用: 不必要的驱动和模块
应用级别优化
# Nginx worker进程绑定CPU worker_processes auto; worker_cpu_affinity auto; # MySQL innodb优化 innodb_buffer_pool_size = 70%内存 innodb_log_file_size = 256M innodb_flush_method = O_DIRECT
监控告警设置
# 使用systemd监控关键服务 systemctlenablemysqld nginx # 设置资源限制 echo'mysql soft nofile 65535'>> /etc/security/limits.conf echo'mysql hard nofile 65535'>> /etc/security/limits.conf
总结
这些优化技巧经过生产环境验证,能显著提升Linux系统性能。记住几个关键点:
1.渐进式优化:不要一次性应用所有配置
2.监控先行:建立完善的监控体系
3.基准测试:优化前后都要做性能测试
4.文档记录:记录每次优化的效果
-
内核
+关注
关注
4文章
1436浏览量
42480 -
Linux
+关注
关注
88文章
11627浏览量
217888 -
Linux系统
+关注
关注
4文章
609浏览量
29629
原文标题:Linux运维工程师必备:99%的人都不知道的系统优化秘技
文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
Linux系统性能指南

Linux系统性能优化技巧
评论