Skip to content

性能优化

本文介绍如何优化节点性能,提高吞吐量和降低延迟。

网络优化

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_control

3. 网卡多队列

启用网卡多队列

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  0

3. 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-grub

CPU 优化

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 cpufrequtils

2. 关闭不必要的服务

bash
# 查看运行的服务
systemctl list-units --type=service --state=running

# 关闭不需要的服务
sudo systemctl disable bluetooth
sudo systemctl disable cups
sudo systemctl disable avahi-daemon

3. 进程优先级

调整节点进程优先级

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 -p

2. 透明大页

关闭透明大页(某些场景下可提高性能):

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: 300

2. 缓存策略

配置缓存大小

yaml
cache:
  max_size: 10GB
  ttl: 3600
  eviction_policy: lru

3. 并发控制

调整工作线程数

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 1

2. 性能测试

网络性能测试

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_reporting

3. 瓶颈分析

使用 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 负载测试
  • [ ] 内存压力测试
  • [ ] 并发连接测试

常见性能问题

网络性能差

排查

  1. 检查网卡是否工作在千兆模式
  2. 检查是否启用了硬件加速
  3. 检查 TCP 参数配置
  4. 检查网络拥塞

磁盘 I/O 瓶颈

排查

  1. 使用 iostat 查看磁盘使用率
  2. 检查是否使用了 SSD
  3. 检查 I/O 调度器配置
  4. 考虑增加缓存

CPU 使用率过高

排查

  1. 使用 top 查看进程 CPU 使用
  2. 检查是否有异常进程
  3. 优化应用程序代码
  4. 考虑升级 CPU

下一步

边缘云分发 | 让内容触达更便捷