性能优化
本文介绍如何优化节点性能,提高吞吐量和降低延迟。
网络优化
1. 启用巨型帧(Jumbo Frame)
巨型帧可以减少数据包数量,提高传输效率。
服务器端配置:
bash
# 查看当前 MTU
ip link show eth0
# 设置 MTU 为 9000
sudo ip link set eth0 mtu 9000
# 永久生效(Ubuntu/Debian)
sudo nano /etc/network/interfaces
# 添加:
# iface eth0 inet static
# mtu 9000
# 永久生效(CentOS/RHEL)
sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
# 添加:
# MTU=9000交换机配置:
所有交换机端口都需要支持巨型帧:
bash
# 在交换机上设置
interface gigabitethernet 1/0/1
mtu 9000注意
整条链路(服务器 → 交换机 → 路由器)都需要支持巨型帧,否则会导致数据包分片。
2. 调整 TCP 参数
增加 TCP 缓冲区:
bash
# 编辑 /etc/sysctl.conf
sudo nano /etc/sysctl.conf
# 添加以下配置
net.core.rmem_max = 134217728
net.core.wmem_max = 134217728
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
net.core.netdev_max_backlog = 5000
# 应用配置
sudo sysctl -p启用 TCP BBR 拥塞控制:
bash
# 检查内核版本(需要 4.9+)
uname -r
# 启用 BBR
echo "net.core.default_qdisc=fq" | sudo tee -a /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
# 验证
sysctl net.ipv4.tcp_congestion_control3. 网卡多队列
启用网卡多队列:
bash
# 查看网卡队列数
ethtool -l eth0
# 设置队列数(根据 CPU 核心数)
sudo ethtool -L eth0 combined 4
# 查看中断分布
cat /proc/interrupts | grep eth0配置 IRQ 亲和性:
bash
# 安装 irqbalance
sudo apt install irqbalance
# 启动服务
sudo systemctl enable irqbalance
sudo systemctl start irqbalance存储优化
1. 使用 SSD
- 优先使用 NVMe SSD
- 避免使用机械硬盘作为缓存盘
2. 文件系统优化
XFS 文件系统(推荐):
bash
# 格式化为 XFS
sudo mkfs.xfs -f /dev/sdb1
# 挂载选项
sudo mount -o noatime,nodiratime /dev/sdb1 /data挂载参数优化:
bash
# 编辑 /etc/fstab
/dev/sdb1 /data xfs noatime,nodiratime,nobarrier 0 03. I/O 调度器
设置 I/O 调度器:
bash
# 查看当前调度器
cat /sys/block/sda/queue/scheduler
# SSD 使用 noop 或 none
echo noop | sudo tee /sys/block/sda/queue/scheduler
# 机械硬盘使用 deadline
echo deadline | sudo tee /sys/block/sda/queue/scheduler
# 永久生效
sudo nano /etc/default/grub
# 添加:
# GRUB_CMDLINE_LINUX="elevator=noop"
sudo update-grubCPU 优化
1. CPU 频率调节
设置性能模式:
bash
# 安装工具
sudo apt install cpufrequtils
# 查看当前模式
cpufreq-info
# 设置为性能模式
sudo cpufreq-set -g performance
# 永久生效
echo "GOVERNOR=\"performance\"" | sudo tee /etc/default/cpufrequtils
sudo systemctl restart cpufrequtils2. 关闭不必要的服务
bash
# 查看运行的服务
systemctl list-units --type=service --state=running
# 关闭不需要的服务
sudo systemctl disable bluetooth
sudo systemctl disable cups
sudo systemctl disable avahi-daemon3. 进程优先级
调整节点进程优先级:
bash
# 查看进程优先级
ps -eo pid,ni,comm | grep node-service
# 提高优先级(降低 nice 值)
sudo renice -10 -p <PID>
# 或在启动时设置
nice -n -10 ./node-service内存优化
1. 调整 Swap
减少 Swap 使用:
bash
# 查看当前 swappiness
cat /proc/sys/vm/swappiness
# 设置为 10(减少 swap 使用)
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p2. 透明大页
关闭透明大页(某些场景下可提高性能):
bash
# 临时关闭
echo never | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
# 永久关闭
sudo nano /etc/default/grub
# 添加:
# GRUB_CMDLINE_LINUX="transparent_hugepage=never"
sudo update-grub应用层优化
1. 连接池
配置合理的连接池大小:
yaml
# 节点配置文件
connection_pool:
min_size: 10
max_size: 100
idle_timeout: 3002. 缓存策略
配置缓存大小:
yaml
cache:
max_size: 10GB
ttl: 3600
eviction_policy: lru3. 并发控制
调整工作线程数:
yaml
workers:
count: 8 # 根据 CPU 核心数调整
max_connections_per_worker: 1000监控与调优
1. 性能监控
安装监控工具:
bash
# 安装 sysstat
sudo apt install sysstat
# 启用统计收集
sudo systemctl enable sysstat
sudo systemctl start sysstat查看性能指标:
bash
# CPU 使用率
mpstat 1
# 内存使用
free -h
# 磁盘 I/O
iostat -x 1
# 网络流量
sar -n DEV 12. 性能测试
网络性能测试:
bash
# 安装 iperf3
sudo apt install iperf3
# 服务端
iperf3 -s
# 客户端
iperf3 -c <server-ip> -t 60 -P 4磁盘性能测试:
bash
# 安装 fio
sudo apt install fio
# 测试随机读写
fio --name=randwrite --ioengine=libaio --iodepth=16 --rw=randwrite --bs=4k --direct=1 --size=1G --numjobs=4 --runtime=60 --group_reporting3. 瓶颈分析
使用 perf 分析:
bash
# 安装 perf
sudo apt install linux-tools-generic
# 记录性能数据
sudo perf record -a -g sleep 30
# 查看报告
sudo perf report性能基准
推荐配置性能指标
| 指标 | 目标值 |
|---|---|
| 网络吞吐量 | > 900 Mbps(千兆网卡) |
| 网络延迟 | < 10ms(本地) |
| 磁盘 IOPS | > 10000(SSD) |
| CPU 使用率 | < 70%(平均) |
| 内存使用率 | < 80% |
性能测试清单
- [ ] 网络带宽测试
- [ ] 网络延迟测试
- [ ] 磁盘读写性能测试
- [ ] CPU 负载测试
- [ ] 内存压力测试
- [ ] 并发连接测试
常见性能问题
网络性能差
排查:
- 检查网卡是否工作在千兆模式
- 检查是否启用了硬件加速
- 检查 TCP 参数配置
- 检查网络拥塞
磁盘 I/O 瓶颈
排查:
- 使用
iostat查看磁盘使用率 - 检查是否使用了 SSD
- 检查 I/O 调度器配置
- 考虑增加缓存
CPU 使用率过高
排查:
- 使用
top查看进程 CPU 使用 - 检查是否有异常进程
- 优化应用程序代码
- 考虑升级 CPU
