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

相关推荐
pofenx6 分钟前
使用nps创建隧道,进行内网穿透
linux·网络·内网穿透·nps
Ronin3057 分钟前
【Linux系统】单例式线程池
linux·服务器·单例模式·线程池·线程安全·死锁
desssq31 分钟前
ubuntu 18.04 泰山派编译报错
linux·运维·ubuntu
Lzc77434 分钟前
Linux的多线程
linux·linux的多线程
清风笑烟语35 分钟前
Ubuntu 24.04 搭建k8s 1.33.4
linux·ubuntu·kubernetes
Dovis(誓平步青云)1 小时前
《Linux 基础指令实战:新手入门的命令行操作核心教程(第一篇)》
linux·运维·服务器
好名字更能让你们记住我1 小时前
MYSQL数据库初阶 之 MYSQL用户管理
linux·数据库·sql·mysql·adb·数据库开发·数据库架构
半桔2 小时前
【网络编程】TCP 服务器并发编程:多进程、线程池与守护进程实践
linux·服务器·网络·c++·tcp/ip
维尔切2 小时前
Shell 脚本编程:函数
linux·运维·自动化
穷人小水滴2 小时前
胖喵必快 (pmbs): btrfs 自动快照工具 (每分钟快照)
linux·rust