> ## Documentation Index
> Fetch the complete documentation index at: https://docs.siflow.cn/llms.txt
> Use this file to discover all available pages before exploring further.

# 对大模型推理服务进行性能压测

> 对运行中的大模型推理服务发起性能压测，评估吞吐、延迟、容量边界和压测报告指标。

性能压测用于评估大模型推理服务的吞吐、延迟和容量边界。平台会拉起压测客户端，按您设置的负载向服务发起真实请求，并输出 QPS、首 token 延迟、出 token 速度、端到端延迟、token 吞吐和 HTTP 状态分布等指标。

## 发起性能压测

### 1. 进入压测页

进入目标大模型推理服务详情页，打开 **一键测试** 页签，单击 **添加压力测试任务**。

压测需要服务处于 **运行中**。同一个服务同一时刻只能有一个活跃测试任务，且性能压测和功能测试共用该限制。压测会对目标服务真实打流量，建议在服务可承受额外负载的时间窗口执行，或对灰度实例、专用实例进行压测。

### 2. 填写压测配置

#### 基本配置

\| 配置 | 说明 |
\| --- | --- | --- |
\| **压力测试形态** | 选择本次压测目标。**单点测试** 用于验证单组负载配置下的服务表现；**缓存命中率矩阵** 用于比较不同缓存命中条件下的指标变化；**速率扫描矩阵** 用于按请求速率变化观察容量边界。 |
\| **运行模式** | 选择负载生成方式。**固定并发** 用于验证某个并发规模下的稳定表现；如果页面提供其他运行模式，请按本次目标选择。 |
\| **API 类型** | 选择被测接口类型，例如 `completions`。API 类型应与服务实际暴露的接口一致，否则压测请求可能无法被服务正确处理。 |

#### 模式参数

| 配置          | 说明                                                |
| ----------- | ------------------------------------------------- |
| **并发数**     | 固定并发模式下的并发请求数量。并发数过高会直接增加服务压力，建议从接近真实业务的并发开始逐步提高。 |
| **运行时长(秒)** | 压测持续时间。时间过短容易受冷启动、模型加载或瞬时抖动影响。                    |
| **预热时长(秒)** | 用于避免冷启动数据污染正式统计。评估上线容量时，建议预留预热时间。                 |
| **持续压测**    | 开启后，压测会持续运行，适合长时间观察稳定性。执行前确认服务和压测客户端资源可承受额外负载。    |
| **最大请求数**   | 控制本次压测最多发送的请求数量，用于限制压测规模和成本。                      |

#### 数据源

| 数据源        | 说明                                                                      |
| ---------- | ----------------------------------------------------------------------- |
| **合成数据**   | 按 token 规格生成请求数据，适合常规压测和矩阵压测。合成数据需要可用 tokenizer；如果平台无法推导分词器，页面可能会禁用该选项。 |
| **单个数据**   | 直接填写一条请求内容，适合快速验证或小规模压测。                                                |
| **数据地址**   | 从可访问 URL 读取压测数据。                                                        |
| **OSS**    | 从对象存储读取压测数据。访问密钥不要出现在截图或共享日志中。                                          |
| **Volume** | 从平台存储卷读取压测数据，适合同集群内已有数据集或样本文件。                                          |

#### 资源配置和高级选项

| 配置             | 说明                                                                                   |
| -------------- | ------------------------------------------------------------------------------------ |
| **资源池**        | 选择压测客户端使用的资源池。压测客户端本身也会消耗资源，资源不足会导致压测任务排队或失败。                                        |
| **实例规格**       | 选择压测客户端实例规格。只有压测客户端成为瓶颈时，增加客户端资源才会提升压测能力。                                            |
| **自定义 Header** | 可为压测请求追加 Header，最多支持 20 条。不要设置 `Authorization`，否则可能覆盖网关鉴权，导致需要鉴权的服务返回 `401` 或 `403`。 |
| **跳过 SSL 校验**  | 访问使用自签名证书、测试证书或证书链暂未配置完整的入口时可开启。生产压测建议优先修正证书配置。                                      |

### 3. 提交压测

单击 **提交**。压测任务会异步执行，您可以在 **一键测试** 页签的测试任务列表中查看状态。

## 查看压测结果

压测任务到达终态后，在 **一键测试** 页签的任务列表中单击 **查看报告**。历史压测任务可按需 **复制** 或 **删除**。

性能压测只提供指标，不自动判断是否达标。是否满足业务目标，需要结合您的 SLA、成本和容量要求判断。

| 指标             | 说明                        | 使用建议                                               |
| -------------- | ------------------------- | -------------------------------------------------- |
| **QPS**        | 实测请求吞吐。                   | 用于判断服务在当前配置下的请求处理能力。                               |
| **TTFT**       | 首 token 延迟。               | 流式输出场景重点关注，尾延迟通常比均值更重要。                            |
| **TPOT / ITL** | 出 token 速度或相邻 token 间隔。   | 用于判断生成阶段是否成为瓶颈。                                    |
| **E2E**        | 端到端延迟。                    | 结合 P50、P90、P95、P99 查看整体和尾部体验。                      |
| **Token 吞吐**   | 单位时间内处理的 token 数。         | 用于比较模型、引擎参数和资源配置变化。                                |
| **HTTP 状态分布**  | 各类状态码和 `incomplete` 请求数量。 | `incomplete` 通常表示压测窗口结束时仍有在途请求未完成，是背压信号，不应直接等同于失败。 |

对比多次压测结果时，应确保模型、引擎版本、服务规格、请求数据、压测形式和目标入口一致。任一项不同，吞吐和延迟差异都可能不具备可比性。

## 判断瓶颈

| 现象                                   | 可能原因                     | 操作建议                                                                          |
| ------------------------------------ | ------------------------ | ----------------------------------------------------------------------------- |
| 服务端 GPU、显存或 CPU 接近上限，延迟随并发快速上升。      | 服务端容量达到瓶颈。               | 评估增加副本、调整单副本资源、优化引擎参数或切换部署方式。                                                 |
| 压测客户端 CPU 接近上限，但服务端资源仍有余量。           | 压测客户端成为瓶颈。               | 增加测试客户端资源或减少单任务负载。                                                            |
| 大量 `5xx` 或网关错误。                      | 服务未真正就绪、入口配置异常或服务端过载。    | 先发送最小请求验证，再查看服务日志、事件和监控。                                                      |
| 合成数据不可选，或出现 `tokenizer_unavailable`。 | 平台无法从服务模型来源推导 tokenizer。 | 改用 **单个数据**、**数据地址**、**OSS** 或 **Volume**，或按页面能力显式配置 `data_source.processor`。 |

## 常见问题

<AccordionGroup>
  <Accordion title="压测会影响线上真实请求吗？">
    会。压测默认走真实服务入口，会给目标服务增加实际负载。生产服务压测前，请确认业务低峰窗口、灰度实例或专用实例。
  </Accordion>

  <Accordion title="为什么没有通过或不通过结论？">
    性能压测只输出指标。是否达标需要结合业务 SLA、成本和容量目标判断；如果需要接口正确性结论，请使用功能测试。
  </Accordion>

  <Accordion title="提示已有活跃任务怎么办？">
    该服务已有未结束的性能压测或功能测试任务。等待任务结束，或停止现有任务后再发起新的测试。
  </Accordion>

  <Accordion title="出现 cannot derive tokenizer from service model source 怎么办？">
    这表示平台无法从当前服务模型来源推导 tokenizer。使用 **合成数据** 时，平台需要 tokenizer 生成请求数据；可以改用 **单个数据**、**数据地址**、**OSS** 或 **Volume**，或按页面提示显式配置 `data_source.processor`。
  </Accordion>
</AccordionGroup>

## 相关文档

* [对大模型推理服务进行功能测试](./test-llm-inference-service-functionality)
