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 系统的整体性能,具体调优措施需要根据你的应用场景(如服务器类型、运行负载)进行选择和调整。

相关推荐
余额不足121382 分钟前
C语言基础十六:枚举、c语言中文件的读写操作
linux·c语言·算法
冷曦_sole6 分钟前
linux-19 根文件系统(一)
linux·运维·服务器
AI大模型学徒9 分钟前
Linux(二)_清理空间
linux·运维·服务器
云川之下19 分钟前
【linux】 unshare -user -r /bin/bash命令详解
linux·bash·unshare
热心市民运维小孙36 分钟前
Ubuntu重命名默认账户
linux·ubuntu·excel
Jackey_Song_Odd2 小时前
解决Ubuntu下无法装载 Windows D盘的问题
linux·ubuntu
乔巴不是狸猫2 小时前
第11周作业
linux
Bessssss3 小时前
centos权限大集合,覆盖多种权限类型,解惑权限后有“. + t s”问题!
linux·运维·centos
silver6874 小时前
Linux 下的 GPT 和 MBR 分区表详解
linux
R-sz4 小时前
14: curl#6 - “Could not resolve host: mirrorlist.centos.org; 未知的错误“
linux·python·centos