Linux系统性能调优技巧

Linux系统性能调优技巧

      • [1. **CPU 调优**](#1. CPU 调优)
        • [1.1. 使用 CPU 亲和力 (CPU Affinity)](#1.1. 使用 CPU 亲和力 (CPU Affinity))
        • [1.2. 调整 CPU 频率调节器](#1.2. 调整 CPU 频率调节器)
      • [2. **内存调优**](#2. 内存调优)
        • [2.1. 优化 Swappiness](#2.1. 优化 Swappiness)
        • [2.2. 清理缓存](#2.2. 清理缓存)
      • [3. **I/O 调优**](#3. I/O 调优)
        • [3.1. 调整 I/O 调度器](#3.1. 调整 I/O 调度器)
        • [3.2. 提升文件系统性能](#3.2. 提升文件系统性能)
      • [4. **网络调优**](#4. 网络调优)
        • [4.1. 调整 TCP 参数](#4.1. 调整 TCP 参数)
        • [4.2. 调整连接跟踪表大小](#4.2. 调整连接跟踪表大小)
      • [5. **进程和服务调优**](#5. 进程和服务调优)
        • [5.1. 优化系统服务](#5.1. 优化系统服务)
        • [5.2. 调整进程优先级 (Nice 值)](#5.2. 调整进程优先级 (Nice 值))
      • [6. **内核调优**](#6. 内核调优)
        • [6.1. 使用 HugePages](#6.1. 使用 HugePages)
        • [6.2. 调整文件描述符限制](#6.2. 调整文件描述符限制)
      • 总结

Linux 系统的性能调优涉及多个方面,包括 CPU、内存、存储、网络等资源的优化。以下是一些常见的 Linux 系统性能调优技巧:

1. CPU 调优

1.1. 使用 CPU 亲和力 (CPU Affinity)

通过设置 CPU 亲和力,可以将进程绑定到特定的 CPU 核心,从而减少上下文切换和 CPU 缓存失效。

  • 查看进程的 CPU 亲和力:

    bash 复制代码
    taskset -cp <PID>
  • 设置进程的 CPU 亲和力:

    bash 复制代码
    taskset -cp <CPU编号> <PID>
1.2. 调整 CPU 频率调节器

根据需要调整 CPU 的工作频率策略来提高性能或节省电源。常用的 CPU 频率调节器包括 performancepowersave

  • 查看当前 CPU 频率调节器:

    bash 复制代码
    cpupower frequency-info
  • 设置为性能优先模式:

    bash 复制代码
    cpupower frequency-set -g performance

2. 内存调优

2.1. 优化 Swappiness

Swappiness 是控制内存交换 (swap) 使用的参数。默认情况下,Linux 会在内存使用到一定程度时开始使用交换空间。通过调整 swappiness 值,可以控制交换的频率。

  • 查看当前 swappiness 值:

    bash 复制代码
    cat /proc/sys/vm/swappiness
  • 临时修改 swappiness 值:

    bash 复制代码
    sysctl vm.swappiness=10
  • 永久修改 swappiness:

    编辑 /etc/sysctl.conf,添加或修改以下内容:

    bash 复制代码
    vm.swappiness = 10
2.2. 清理缓存

在某些情况下,手动清理缓存可以释放内存。

  • 清理页面缓存:

    bash 复制代码
    sync; echo 1 > /proc/sys/vm/drop_caches
  • 清理目录和 inode 缓存:

    bash 复制代码
    sync; echo 2 > /proc/sys/vm/drop_caches
  • 清理所有缓存:

    bash 复制代码
    sync; echo 3 > /proc/sys/vm/drop_caches

3. I/O 调优

3.1. 调整 I/O 调度器

Linux 提供了多种 I/O 调度器,如 noopdeadlinecfq,根据你的系统负载选择合适的调度器可以提高性能。

  • 查看当前 I/O 调度器:

    bash 复制代码
    cat /sys/block/<设备名>/queue/scheduler
  • 设置 I/O 调度器:

    bash 复制代码
    echo deadline > /sys/block/<设备名>/queue/scheduler
  • 常见调度器:

    • noop:适合 SSD 等低延迟设备。
    • deadline:适合需要低延迟的环境。
    • cfq:适合一般桌面系统,提供公平的 I/O 分配。
3.2. 提升文件系统性能

使用 noatime 挂载选项可以减少文件系统的写操作。

  • 编辑 /etc/fstab,在挂载选项中添加 noatime

    bash 复制代码
    /dev/sda1 / ext4 defaults,noatime 0 1

4. 网络调优

4.1. 调整 TCP 参数

通过调整 /etc/sysctl.conf 中的 TCP 相关参数,可以优化网络性能。

  • 增加 TCP 缓冲区大小:

    bash 复制代码
    net.core.rmem_max = 16777216
    net.core.wmem_max = 16777216
    net.ipv4.tcp_rmem = 4096 87380 16777216
    net.ipv4.tcp_wmem = 4096 65536 16777216
  • 启用 TCP 快速重传:

    bash 复制代码
    net.ipv4.tcp_low_latency = 1
4.2. 调整连接跟踪表大小

如果系统需要处理大量并发连接,可以增加连接跟踪表的大小:

  • 临时调整:

    bash 复制代码
    sysctl -w net.netfilter.nf_conntrack_max=65536
  • 永久调整:

    编辑 /etc/sysctl.conf,添加以下内容:

    bash 复制代码
    net.netfilter.nf_conntrack_max=65536

5. 进程和服务调优

5.1. 优化系统服务

通过禁用不必要的服务可以减少资源占用,从而提高性能。

  • 查看开机启动的服务:

    bash 复制代码
    systemctl list-unit-files --type=service
  • 禁用不必要的服务:

    bash 复制代码
    sudo systemctl disable <service_name>
5.2. 调整进程优先级 (Nice 值)

通过调整进程的 nice 值,可以提高或降低特定进程的优先级。

  • 查看当前进程的优先级:

    bash 复制代码
    ps -o pid,ni,comm -p <PID>
  • 提高进程的优先级(降低 nice 值):

    bash 复制代码
    renice -n -10 -p <PID>

6. 内核调优

6.1. 使用 HugePages

HugePages 是一种内存管理技术,适用于需要高效处理大块内存的应用程序(如数据库)。

  • 查看当前 HugePages 设置:

    bash 复制代码
    grep Huge /proc/meminfo
  • 设置 HugePages 的数量:

    bash 复制代码
    echo 128 > /proc/sys/vm/nr_hugepages
6.2. 调整文件描述符限制

增加文件描述符的数量可以提高处理并发连接的能力。

  • 查看当前文件描述符限制:

    bash 复制代码
    ulimit -n
  • 临时调整:

    bash 复制代码
    ulimit -n 65536
  • 永久调整:

    编辑 /etc/security/limits.conf,添加以下内容:

    bash 复制代码
    * soft nofile 65536
    * hard nofile 65536

总结

这些技巧帮助提升 Linux 系统的整体性能,具体调优措施需要根据你的应用场景(如服务器类型、运行负载)进行选择和调整。

相关推荐
一叶知秋yyds17 小时前
Ubuntu 虚拟机安装 OpenClaw 完整流程
linux·运维·ubuntu·openclaw
楠奕20 小时前
CentOS7安装GoldenDB单机搭建及常见报错解决方案
linux·运维·服务器
空中海20 小时前
2.7 列表与滚动性能优化
flutter·性能优化·dart
剑锋所指,所向披靡!20 小时前
Linux常用指令(2)
linux·运维·服务器
不愿透露姓名的大鹏21 小时前
Oracle归档日志爆满急救指南
linux·数据库·oracle·dba
W.W.H.21 小时前
嵌入式常见的面试题1
linux·网络·经验分享·网络协议·tcp/ip
木白CPP21 小时前
DMA-Buffer内核驱动API文档
linux
HXQ_晴天21 小时前
Linux 系统的交互式进程监控工具htop
linux·服务器·网络
song85821 小时前
韦东山开发手册阅读笔记(五)
linux
LIZhang201621 小时前
linux写一个脚本实时保存内存占用情况
linux·运维·服务器