0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux系统性能优化技巧

马哥Linux运维 来源:马哥Linux运维 2025-08-27 14:34 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前言:经过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服务器运行了很多应用,在高负载下,服务器可能会出现性能瓶颈,例如CPU利用率过高、内存不足、磁盘I/O瓶颈等,从而导致系统卡顿,服务无法正常运行等问题。所以针对以上问题,可以通过调整内核参数和
    的头像 发表于 06-23 14:12 1480次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>系统性能</b>指南

    HBase性能优化方法总结

    对于写密集型提高性能需尽量减少刷写、合并和拆分的次数,以减少IO压力,提高系统性能。除了以上方法可以提高HBase性能之外,还可以采用以下方法:1. JVM垃圾回收优化;2. 本地me
    发表于 04-20 17:16

    Linux系统性能优化策略

    近年来,世界上许多大软件公司纷纷推出各种Linux服务器系统Linux下的应用软件。目前,Linux 已可以与各种传统的商业操作系统分庭抗
    发表于 07-16 06:23

    Linux和Android系统故障和优化性能的方法和流程探讨

    作为一名Linux 或 Android 平台的系统工程师,在开发系统新功能外,主要工作就是优化系统性能,使
    发表于 07-22 06:48

    镜像对系统性能的影响有哪些?

    镜像抑制基础知识可减少AD9361和AD9371中正交不平衡的技术镜像的来源、含义及对系统性能的影响
    发表于 03-29 07:59

    如何提高FPGA的系统性能

    本文基于Viitex-5 LX110验证平台的设计,探索了高性能FPGA硬件系统设计的一般性方法及流程,以提高FPGA的系统性能
    发表于 04-26 06:43

    如何优化汽车电源系统性能的布板原则呢?

    /MAX16904开关稳压器设计为例,介绍优化系统性能的布板原则。  布线通用规则  将输入电容C3、电感L1和输出电容C2形成的环路面积保持在最小。  BIAS输出电容(C4)尽可能靠近第13引脚(BIAS
    发表于 03-15 16:39

    一文带你详解芯片--SL8541e-系统性能优化

    背景 伙伴反馈,设备操作卡顿,OH基础系统版本应用操作慢,应用人机交互体验差。本文为你总结芯片解决方案–SL8541e-系统性能优化。主要内容包括: *1. 确定优化思路 帧率
    发表于 08-22 09:12

    优化BIOS设置提高系统性能

    BIOS设置对系统性能的影响非常大,优化的BIOS设置,可大大提高PC整体性能,不恰当的设置会导致系统性能下降,运行不稳定,甚至出现死机等现象。下面就BIOS中影响
    发表于 10-10 14:27 43次下载

    配置控制器局域网络(CAN)位时序,优化系统性能

    配置控制器局域网络(CAN)位时序,优化系统性能
    发表于 01-07 16:18 0次下载

    Linux文件系统性能优化

    由于各种的I/O负载情形各异,Linux系统中文件系统的缺省配置一般来说都比较中庸,强调普遍适用性。然而在特定应用下,这种配置往往在I/O性能方面不能达到最优。
    发表于 04-25 17:24 1055次阅读

    Linux CPU的性能应该如何优化

    Linux系统中,由于成本的限制,往往会存在资源上的不足,例如 CPU、内存、网络、IO 性能。本文,就对 Linux 进程和 CPU 的原理进行分析,总结出 CPU
    的头像 发表于 01-18 08:52 4039次阅读

    如何优化电源能效和系统性能

    近期,安森美(onsemi)进行了一系列电源在线直播,从功率因数、建模、仿真、验证、LLC谐振、同步整流等不同方面深入探讨如何优化电源能效和系统性能,包括专门针对汽车和工业应用的3相PFC方案,助电源设计人员解决能效挑战,满足不同应用需求。
    的头像 发表于 01-07 17:27 3118次阅读

    超低抖动时钟发生器如何优化串行链路系统性能

    超低抖动时钟发生器如何优化串行链路系统性能
    发表于 11-04 09:50 0次下载
    超低抖动时钟发生器如何<b class='flag-5'>优化</b>串行链路<b class='flag-5'>系统性能</b>

    Linux系统性能调优方案

    关键要点预览:本文将深入解析Linux系统性能瓶颈的根本原因,提供可直接落地的调优方案,让你的系统性能提升30-50%!
    的头像 发表于 08-06 17:49 570次阅读