裸金属服务器的性能上限,往往不只取决于处理器和内存。网络中断集中在少数 CPU、磁盘队列过短或文件系统参数不匹配,都可能让应用出现延迟升高、吞吐下降等问题。调优时应先确认瓶颈,再分别处理网络路径和存储 I/O,避免盲目修改内核参数。
先确定性能瓶颈在哪里
建议在业务低峰和高峰分别观察 CPU 使用率、软中断、网卡丢包、磁盘队列长度、I/O 等待和应用响应时间。Linux 环境可结合 sar、iostat、ss、ethtool 和系统日志查看;Windows Server 可使用性能监视器观察网卡吞吐、平均磁盘队列长度和处理器中断时间。
如果磁盘 I/O 等待明显升高,而网络吞吐并未接近链路上限,应优先检查存储。如果网卡接收丢包、软中断占用较高,但磁盘利用率正常,则应从网卡队列、RSS 和 CPU 亲和性入手。裸金属服务器没有虚拟化层额外调度,配置问题通常会更直接地反映在监控指标上。
网络调优:让数据包分散到合适的 CPU
调整网卡队列与 RSS
现代网卡通常支持多接收队列。以 Intel E810 这类高带宽网卡为例,队列数量并非越多越好:队列过少会造成单核拥堵,队列过多则可能增加中断和缓存开销。可以先查看网卡当前队列数与 RSS 状态,再根据实际并发连接数、CPU 核数和业务包大小进行调整。
- 记录调整前的吞吐、P99 延迟、丢包数和软中断占用。
- 确认网卡驱动、固件和内核版本处于相互兼容的状态。
- 逐步增加接收队列,例如每次调整 2 至 4 个队列,观察 CPU 是否均衡。
- 将高流量网卡的队列分配到多个物理核心,尽量避开长期运行数据库或加密任务的核心。
- 保留回滚记录,确认重启后队列和 RSS 配置仍然生效。
如果应用使用大量短连接,网卡中断和连接跟踪可能成为限制因素;如果主要传输大文件,则应同时关注单流吞吐、TCP 窗口和磁盘读取速度。网络调优必须以业务流量模型为依据,不能只看链路标称速率。
谨慎使用 Jumbo Frame
MTU 从常见的 1500 调整到约 9000,能够减少大流量传输中的数据包数量和协议处理开销,但前提是端到端设备都支持相同配置,包括交换机端口、路由路径和对端服务器。只在局部启用 Jumbo Frame,可能导致分片、丢包或连接异常。
因此,Jumbo Frame 更适合位于同一数据中心网络、路径固定且以大块数据传输为主的场景。互联网公开服务、跨运营商链路或设备情况不明时,保持标准 MTU 通常更稳妥。修改后应使用不允许分片的连通性测试检查整条路径。
磁盘调优:降低等待而不是单纯追求吞吐
区分随机 I/O 与顺序 I/O
NVMe SSD 适合高并发随机读写,但实际表现仍受容量、写入放大、温度和队列深度影响。数据库索引、日志和小文件服务更关心低延迟与随机 IOPS;备份、视频转码和归档则更依赖顺序吞吐。使用同一块盘承载所有类型的负载,容易出现日志写入与大文件读写相互干扰。

例如,采用 Samsung PM9A3 一类数据中心级 NVMe SSD 时,可以将高频日志与业务数据分开规划;若只有一块盘,则至少为日志、临时文件和数据目录设置清晰的空间配额,避免日志增长挤占业务空间。具体效果取决于容量、固件、文件系统和负载类型,不应直接套用厂商标称值。
选择合适的 I/O 调度器与文件系统
NVMe 设备通常适合使用较轻量的 I/O 调度方式,例如 none;SATA SSD 或传统磁盘则可能更适合 mq-deadline。选择时应以实际延迟和吞吐测试为准。对于大量小文件的服务,XFS 和 ext4 都是常见选择:XFS 更适合大文件和并行 I/O,ext4 配置与维护较为普遍。文件系统选择不能脱离应用、备份工具和运维习惯单独判断。
- 用 lsblk、文件系统工具和 iostat 确认设备类型、挂载点及当前队列表现。
- 确认文件系统已经按设备边界正确对齐,避免分区起始位置不合适造成额外 I/O。
- 根据业务选择 none 或 mq-deadline,并在相同数据集、相同并发量下比较。
- 对数据库、日志和临时目录分别观察延迟,避免只用总体吞吐作结论。
- 将测试结果、参数和回滚方式写入变更记录,生产环境分批实施。
挂载参数也应保持克制。noatime 可以减少文件访问时间更新带来的写入,但部分应用依赖访问时间信息时不宜直接启用。定期检查 SSD 剩余空间、温度和介质错误;长期接近满盘运行会影响写入整理和性能稳定性。
把网络与磁盘放到同一条观测链路
网络吞吐升高并不代表应用一定变快。若数据进入速度超过磁盘写入能力,系统会在内核缓冲区、应用队列或存储队列中积压。建议同时记录请求延迟、网卡吞吐、CPU 软中断、磁盘 await、队列长度和错误计数,并以 5 分钟或更短的时间窗口对齐观察。
完成调优后,先在不影响核心流量的时间段进行压测,再逐步扩大范围。任何参数都应保留调整前值;当延迟、丢包或错误率恶化时,优先回滚最近一次变更,而不是继续叠加参数。
常见问题
网卡带宽没有跑满,是否一定需要增加队列?
不一定。瓶颈可能在应用单线程、远端服务、TCP 窗口或磁盘读取。应先查看 CPU 软中断、单流吞吐和应用等待时间。
MTU 越大,网络延迟就越低吗?
不是。MTU 较大主要减少大数据传输中的包数量,端到端不一致时反而可能造成分片或丢包。
NVMe SSD 是否一定要使用 none 调度器?
不一定。none 常适合低延迟 NVMe 场景,但实际结果还受内核版本、应用队列和负载类型影响,应通过对照测试决定。
调优后性能下降怎么办?
恢复原有队列、MTU、调度器或挂载参数,并对比变更前后的监控数据。裸金属服务器调优应一次只改一类参数,便于定位影响。
总的来说,裸金属服务器的网络与磁盘调优应围绕真实负载展开:先测量,再调整网卡队列、MTU、I/O 调度和目录布局,最后通过延迟、错误率与队列指标验证结果。


