# /etc/sysctl.conf 关键参数
vm.swappiness = 10 # 减少swap使用倾向
vm.dirty_ratio = 10 # 系统脏页比例阈值
vm.dirty_background_ratio = 5 # 后台刷脏页比例
kernel.sched_migration_cost_ns = 5000000 # 减少进程迁移
net.core.somaxconn = 4096 # 增大连接队列
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_fin_timeout = 30 # 减少FIN_WAIT时间
bash
noatime,nodiratime,data=writeback,barrier=0
调整IO调度器:
# SSD使用noop或deadline
echo noop > /sys/block/sda/queue/scheduler
# 传统硬盘使用deadline
echo deadline > /sys/block/sda/queue/scheduler
# 透明大页(THP)优化
echo never > /sys/kernel/mm/transparent_hugepage/enabled
# 调整内存分配策略
echo 1 > /proc/sys/vm/overcommit_memory
# 查看当前调节器
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
# 设置为性能模式
echo performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
# 安装irqbalance
apt-get install irqbalance -y
systemctl enable irqbalance
systemctl start irqbalance
# 手动设置中断CPU亲和性
echo 2 > /proc/irq/123/smp_affinity
# 启用RSS(接收端缩放)
ethtool -L eth0 combined 8
# 调整队列大小
ethtool -G eth0 rx 4096 tx 4096
# 启用GRO/GSO
ethtool -K eth0 gro on gso on
# 增大TCP窗口大小
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
# 启用TCP快速打开
net.ipv4.tcp_fastopen = 3
# 调整TIME_WAIT回收
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
# 查看当前调度器
cat /sys/block/sdX/queue/scheduler
# 设置合适的调度器
echo deadline > /sys/block/sdX/queue/scheduler
# 调整队列深度
echo 256 > /sys/block/sdX/queue/nr_requests
# 调整I/O调度策略
lvchange --cachemode writethrough vg_name/lv_name
# 条带化设置
lvcreate -i 4 -I 64 -L 100G -n lv_name vg_name
工具 | 用途 |
---|---|
top/htop | 实时系统监控 |
vmstat | 系统整体状态(CPU/内存/IO) |
iostat | 磁盘I/O统计 |
sar | 历史性能数据收集 |
perf | CPU性能分析 |
strace | 系统调用跟踪 |
tcpdump | 网络包分析 |
bpftrace | 高级内核追踪 |
# 设置进程优先级
renice -n -5 -p 1234
# 设置CPU亲和性
taskset -cp 0,1 1234
# 使用大页内存
echo 2048 > /proc/sys/vm/nr_hugepages
# 应用中使用mlock锁定内存
mlockall(MCL_CURRENT | MCL_FUTURE);
# 关闭不必要的安全特性(测试环境)
echo 0 > /proc/sys/kernel/randomize_va_space
# SELinux性能优化
setsebool -P httpd_can_network_connect 1
tuned:自动应用性能配置
yum install tuned
tuned-adm profile throughput-performance
sysbench:基准测试工具
sysbench cpu --threads=8 run
fio:存储性能测试
fio --name=randread --ioengine=libaio --rw=randread --bs=4k --numjobs=4 --size=1G --runtime=60 --time_based
通过以上全方位的Linux性能调优方法,可以显著提升系统性能,但需要根据实际应用场景和工作负载特点进行针对性调整。