Linux系统性能调优技巧
- 1. **CPU 调优**
- 1.1. 使用 CPU 亲和力 (CPU Affinity)
- 1.2. 调整 CPU 频率调节器
 
- 2. **内存调优**
- 2.1. 优化 Swappiness
- 2.2. 清理缓存
 
- 3. **I/O 调优**
- 3.1. 调整 I/O 调度器
- 3.2. 提升文件系统性能
 
- 4. **网络调优**
- 4.1. 调整 TCP 参数
- 4.2. 调整连接跟踪表大小
 
- 5. **进程和服务调优**
- 5.1. 优化系统服务
- 5.2. 调整进程优先级 (Nice 值)
 
- 6. **内核调优**
- 6.1. 使用 HugePages
- 6.2. 调整文件描述符限制
 
- 总结
 
 
Linux 系统的性能调优涉及多个方面,包括 CPU、内存、存储、网络等资源的优化。以下是一些常见的 Linux 系统性能调优技巧:
1. CPU 调优
1.1. 使用 CPU 亲和力 (CPU Affinity)
通过设置 CPU 亲和力,可以将进程绑定到特定的 CPU 核心,从而减少上下文切换和 CPU 缓存失效。
-  查看进程的 CPU 亲和力: taskset -cp <PID>
-  设置进程的 CPU 亲和力: taskset -cp <CPU编号> <PID>
1.2. 调整 CPU 频率调节器
根据需要调整 CPU 的工作频率策略来提高性能或节省电源。常用的 CPU 频率调节器包括 performance 和 powersave。
-  查看当前 CPU 频率调节器: cpupower frequency-info
-  设置为性能优先模式: cpupower frequency-set -g performance
2. 内存调优
2.1. 优化 Swappiness
Swappiness 是控制内存交换 (swap) 使用的参数。默认情况下,Linux 会在内存使用到一定程度时开始使用交换空间。通过调整 swappiness 值,可以控制交换的频率。
-  查看当前 swappiness 值: cat /proc/sys/vm/swappiness
-  临时修改 swappiness 值: sysctl vm.swappiness=10
-  永久修改 swappiness: 
 编辑/etc/sysctl.conf,添加或修改以下内容:vm.swappiness = 10
2.2. 清理缓存
在某些情况下,手动清理缓存可以释放内存。
-  清理页面缓存: sync; echo 1 > /proc/sys/vm/drop_caches
-  清理目录和 inode 缓存: sync; echo 2 > /proc/sys/vm/drop_caches
-  清理所有缓存: sync; echo 3 > /proc/sys/vm/drop_caches
3. I/O 调优
3.1. 调整 I/O 调度器
Linux 提供了多种 I/O 调度器,如 noop、deadline 和 cfq,根据你的系统负载选择合适的调度器可以提高性能。
-  查看当前 I/O 调度器: cat /sys/block/<设备名>/queue/scheduler
-  设置 I/O 调度器: echo deadline > /sys/block/<设备名>/queue/scheduler
-  常见调度器: - noop:适合 SSD 等低延迟设备。
- deadline:适合需要低延迟的环境。
- cfq:适合一般桌面系统,提供公平的 I/O 分配。
 
3.2. 提升文件系统性能
使用 noatime 挂载选项可以减少文件系统的写操作。
- 编辑 /etc/fstab,在挂载选项中添加noatime:/dev/sda1 / ext4 defaults,noatime 0 1
4. 网络调优
4.1. 调整 TCP 参数
通过调整 /etc/sysctl.conf 中的 TCP 相关参数,可以优化网络性能。
-  增加 TCP 缓冲区大小: 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 快速重传: net.ipv4.tcp_low_latency = 1
4.2. 调整连接跟踪表大小
如果系统需要处理大量并发连接,可以增加连接跟踪表的大小:
-  临时调整: sysctl -w net.netfilter.nf_conntrack_max=65536
-  永久调整: 
 编辑/etc/sysctl.conf,添加以下内容:net.netfilter.nf_conntrack_max=65536
5. 进程和服务调优
5.1. 优化系统服务
通过禁用不必要的服务可以减少资源占用,从而提高性能。
-  查看开机启动的服务: systemctl list-unit-files --type=service
-  禁用不必要的服务: sudo systemctl disable <service_name>
5.2. 调整进程优先级 (Nice 值)
通过调整进程的 nice 值,可以提高或降低特定进程的优先级。
-  查看当前进程的优先级: ps -o pid,ni,comm -p <PID>
-  提高进程的优先级(降低 nice 值): renice -n -10 -p <PID>
6. 内核调优
6.1. 使用 HugePages
HugePages 是一种内存管理技术,适用于需要高效处理大块内存的应用程序(如数据库)。
-  查看当前 HugePages 设置: grep Huge /proc/meminfo
-  设置 HugePages 的数量: echo 128 > /proc/sys/vm/nr_hugepages
6.2. 调整文件描述符限制
增加文件描述符的数量可以提高处理并发连接的能力。
-  查看当前文件描述符限制: ulimit -n
-  临时调整: ulimit -n 65536
-  永久调整: 
 编辑/etc/security/limits.conf,添加以下内容:* soft nofile 65536 * hard nofile 65536
总结
这些技巧帮助提升 Linux 系统的整体性能,具体调优措施需要根据你的应用场景(如服务器类型、运行负载)进行选择和调整。