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 亲和力:
bashtaskset -cp <PID>
-
设置进程的 CPU 亲和力:
bashtaskset -cp <CPU编号> <PID>
1.2. 调整 CPU 频率调节器
根据需要调整 CPU 的工作频率策略来提高性能或节省电源。常用的 CPU 频率调节器包括 performance
和 powersave
。
-
查看当前 CPU 频率调节器:
bashcpupower frequency-info
-
设置为性能优先模式:
bashcpupower frequency-set -g performance
2. 内存调优
2.1. 优化 Swappiness
Swappiness 是控制内存交换 (swap) 使用的参数。默认情况下,Linux 会在内存使用到一定程度时开始使用交换空间。通过调整 swappiness 值,可以控制交换的频率。
-
查看当前 swappiness 值:
bashcat /proc/sys/vm/swappiness
-
临时修改 swappiness 值:
bashsysctl vm.swappiness=10
-
永久修改 swappiness:
编辑
/etc/sysctl.conf
,添加或修改以下内容:bashvm.swappiness = 10
2.2. 清理缓存
在某些情况下,手动清理缓存可以释放内存。
-
清理页面缓存:
bashsync; echo 1 > /proc/sys/vm/drop_caches
-
清理目录和 inode 缓存:
bashsync; echo 2 > /proc/sys/vm/drop_caches
-
清理所有缓存:
bashsync; echo 3 > /proc/sys/vm/drop_caches
3. I/O 调优
3.1. 调整 I/O 调度器
Linux 提供了多种 I/O 调度器,如 noop
、deadline
和 cfq
,根据你的系统负载选择合适的调度器可以提高性能。
-
查看当前 I/O 调度器:
bashcat /sys/block/<设备名>/queue/scheduler
-
设置 I/O 调度器:
bashecho 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 缓冲区大小:
bashnet.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216
-
启用 TCP 快速重传:
bashnet.ipv4.tcp_low_latency = 1
4.2. 调整连接跟踪表大小
如果系统需要处理大量并发连接,可以增加连接跟踪表的大小:
-
临时调整:
bashsysctl -w net.netfilter.nf_conntrack_max=65536
-
永久调整:
编辑
/etc/sysctl.conf
,添加以下内容:bashnet.netfilter.nf_conntrack_max=65536
5. 进程和服务调优
5.1. 优化系统服务
通过禁用不必要的服务可以减少资源占用,从而提高性能。
-
查看开机启动的服务:
bashsystemctl list-unit-files --type=service
-
禁用不必要的服务:
bashsudo systemctl disable <service_name>
5.2. 调整进程优先级 (Nice 值)
通过调整进程的 nice
值,可以提高或降低特定进程的优先级。
-
查看当前进程的优先级:
bashps -o pid,ni,comm -p <PID>
-
提高进程的优先级(降低 nice 值):
bashrenice -n -10 -p <PID>
6. 内核调优
6.1. 使用 HugePages
HugePages 是一种内存管理技术,适用于需要高效处理大块内存的应用程序(如数据库)。
-
查看当前 HugePages 设置:
bashgrep Huge /proc/meminfo
-
设置 HugePages 的数量:
bashecho 128 > /proc/sys/vm/nr_hugepages
6.2. 调整文件描述符限制
增加文件描述符的数量可以提高处理并发连接的能力。
-
查看当前文件描述符限制:
bashulimit -n
-
临时调整:
bashulimit -n 65536
-
永久调整:
编辑
/etc/security/limits.conf
,添加以下内容:bash* soft nofile 65536 * hard nofile 65536
总结
这些技巧帮助提升 Linux 系统的整体性能,具体调优措施需要根据你的应用场景(如服务器类型、运行负载)进行选择和调整。