在进行调优前,需要先了解系统当前状态: - top/htop:实时监控系统资源使用情况 - vmstat:监控内存、进程、CPU活动等 - iostat:监控磁盘I/O情况 - netstat/ss:网络连接和统计信息 - dmesg:查看内核日志 - sar:系统活动报告工具(sysstat包)
通过修改/etc/sysctl.conf
文件优化内核参数:
# 文件描述符限制
fs.file-max = 1000000
# 内存相关
vm.swappiness = 10
vm.vfs_cache_pressure = 50
# 网络调优
net.core.somaxconn = 4096
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_tw_reuse = 1
应用修改:sysctl -p
noatime
或relatime
挂载选项减少磁盘I/Oblockdev --setra 4096 /dev/sda
sysbench cpu --cpu-max-prime=20000 run
sysbench memory --memory-block-size=1K --memory-total-size=10G run
fio:灵活的I/O测试工具
[global]
ioengine=libaio
direct=1
runtime=60
[random-read]
rw=randread
bs=4k
size=1G
dd:简单测试(注意缓存影响)
# 测试写入
dd if=/dev/zero of=testfile bs=1G count=1 oflag=direct
# 测试读取
dd if=testfile of=/dev/null bs=1G count=1 iflag=direct
iperf3:网络带宽测试
# 服务器端
iperf3 -s
# 客户端
iperf3 -c <server_ip> -t 30
taskset
设置CPU亲和性chrt
调整进程调度策略# 查看当前状态
cat /sys/kernel/mm/transparent_hugepage/enabled
# 禁用THP(某些场景下可能提升性能)
echo never > /sys/kernel/mm/transparent_hugepage/enabled
numactl
控制NUMA策略numastat
perf:Linux性能分析工具
perf top
perf stat
perf record
strace/ltrace:系统调用跟踪
eBPF工具集(BCC/BPFtrace):
火焰图生成:
perf record -F 99 -a -g -- sleep 30
perf script | stackcollapse-perf.pl | flamegraph.pl > perf.svg
通过以上方法和工具的组合使用,可以系统地分析和提升Linux系统的性能。注意调优应根据具体应用场景进行,没有放之四海而皆准的最优配置。