SGLang推理框架部署与高并发服务配置全指南
一、SGLang部署前环境准备
如果你之前部署大模型推理服务时遇到过显存浪费、并发上不去、响应延迟忽高忽低的问题,花10分钟看完本节的环境准备流程,能帮你避开90%的部署初期踩坑,后续SGLang的高并发性能才能完全释放出来。我们团队在生产环境落地SGLang的过程中,踩过无数环境配置的坑,把这些经验浓缩成本节内容,能帮你少走好几天的弯路。
SGLang底层大量依赖CUDA原生算子实现高性能推理,对CUDA版本的最低要求是11.8,低于这个版本不仅会直接报错,还会出现算子兼容性问题导致推理结果错误。我们可以通过执行nvidia-smi查看当前显卡驱动版本,确认驱动版本≥525,再通过nvcc --version查看CUDA toolkit版本,确保满足要求。如果你的机器CUDA版本不满足,不要直接升级CUDA,优先升级显卡驱动,驱动版本足够的情况下CUDA toolkit可以向下兼容。
接下来我们需要准备Python3.8及以上的独立运行环境,SGLang的依赖包对Python版本有严格限制,低于3.8会出现大量包兼容性问题,高于3.11目前也有部分依赖不兼容的情况。我们推荐用conda或者venv创建独立的虚拟环境,不要直接使用系统全局的Python环境,避免和系统其他应用的依赖包产生冲突。创建完虚拟环境后记得激活,后续所有SGLang相关的操作都在这个虚拟环境中执行。
最后我们建议优先拉取SGLang官方最新稳定版Docker镜像,官方镜像已经把所有依赖、CUDA算子、SGLang本体都打包完成,还针对不同CUDA版本做了适配,完全不需要手动编译安装,能节省至少1小时的配置时间。稳定版镜像已经过大量生产环境验证,不会有奇奇怪怪的依赖问题,比手动pip安装稳定性高很多。如果你的机器没有安装Docker,也可以选择用官方提供的pip安装包,但需要自己手动匹配CUDA版本,适合有经验的开发者。
- 执行nvidia-smi确认驱动版本≥525,nvcc --version确认CUDA≥11.8
- 创建Python3.8-3.11区间的独立虚拟环境,禁止使用系统全局Python
- 优先从Docker Hub拉取SGLang官方最新稳定版镜像,匹配当前CUDA版本
- 提前预留至少16G显存用于SGLang运行时开销,避免和其他服务争抢显存
# 1. 验证CUDA与驱动版本是否符合要求
nvidia-smi
nvcc --version
# 输出示例:cucc 11.8.89,说明CUDA版本满足SGLang要求
# 2. 创建Python3.10虚拟环境(推荐3.8-3.11区间)
conda create -n sglang-env python=3.10 -y
conda activate sglang-env
# 3. 拉取SGLang官方CUDA11.8版本最新稳定镜像
docker pull sglang/sglang:latest-cu118
| 部署方案 | 优势 | 代价 | 适用场景 |
|---|---|---|---|
| 官方预编译Docker镜像 | 开箱即用,依赖全预装,无编译成本,稳定性高 | 镜像体积约10G,需要提前安装Docker环境 | 新手部署、生产环境快速落地 |
| 本地源码编译安装 | 可自定义CUDA算子,适配特殊硬件需求 | 编译耗时1-2小时,需要GCC、CUDA toolkit等编译环境 | 有算子定制需求的老手开发者 |
| pip直接安装 | 轻量无额外依赖,无需Docker环境 | 依赖兼容性问题多,CUDA算子需要手动匹配,稳定性低 | 开发测试环境快速验证 |
| NGC定制优化镜像 | 针对A100/H100等高端硬件深度优化,推理性能更高 | 需要NGC账号,镜像更新滞后于官方最新版 | 大规模A100/H100集群生产部署 |
综合来看,除非你有特殊的算子定制需求,否则我们优先推荐选择官方预编译的Docker镜像部署,能最大程度降低环境配置出错概率,把时间集中在模型调优和业务逻辑开发上。环境准备完成后,我们就可以进入SGLang的模型加载与基础服务启动环节,接下来会详细讲解不同规模模型的配置方法。
二、SGLang基础安装与启动流程
我们首先通过pip包管理器完成SGLang核心包的安装,推荐直接使用pip install sglang[all]命令拉取全量依赖,该命令会自动安装FlashAttention、vLLM兼容层等加速推理所需的组件,无需手动逐个配置依赖。安装过程中会自动校验当前Python版本是否符合要求,SGLang目前支持3.8到3.11版本的Python环境,若使用更高版本会出现安装报错。安装完成后执行sglang --version命令即可验证安装是否成功,终端返回版本号说明基础安装已完成。
接下来我们需要配置模型权重的存储路径与访问权限,首先将下载好的预训练模型权重存放在磁盘空间充足、读写速度快的目录下,比如/home/llm_weights/,避免使用网络挂载的低延迟目录影响推理速度。如果使用Hugging Face格式的模型,需要设置HF_HOME环境变量指向模型缓存目录,同时给当前运行用户授予对应目录的读写执行权限,否则启动服务时会报权限不足错误。如果是多机多卡部署场景,需要确保所有节点的模型路径一致,且共享存储的挂载配置在所有节点上完全对齐。
完成上述配置后我们就可以进行单卡启动验证,首先执行sglang serve --model-path 你的模型绝对路径 --port 8000命令启动服务,终端会显示服务启动成功的日志,包括模型加载耗时、显存占用等信息。服务启动后我们可以通过发送HTTP请求验证推理功能是否正常,比如使用curl命令发送测试请求,若终端返回包含模型回复的JSON格式响应,说明单卡推理功能已经可以正常使用。如果启动过程中出现显存不足的报错,可以添加--tensor-parallel-size 1参数指定单卡运行,或者添加--max-model-len参数减小最大序列长度降低显存占用。
# 1. 安装SGLang全量依赖
pip install sglang[all]
# 2. 启动单卡推理服务,替换为你的模型实际路径
sglang serve --model-path /home/llm_weights/llama-3-8b-instruct --port 8000
# 3. 发送测试请求验证推理功能
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "llama-3-8b-instruct",
"messages": [{"role": "user", "content": "请用一句话介绍SGLang"}]
}'
# 输出示例:
# {
# "id": "chatcmpl-xxx",
# "object": "chat.completion",
# "created": 1234567890,
# "model": "llama-3-8b-instruct",
# "choices": [
# {
# "index": 0,
# "message": {
# "role": "assistant",
# "content": "SGLang是斯坦福大学推出的开源大模型推理服务框架,主打高吞吐、低延迟的推理性能优化。"
# },
# "finish_reason": "stop"
# }
# ],
# "usage": {
# "prompt_tokens": 12,
# "completion_tokens": 35,
# "total_tokens": 47
# }
# }
| 安装/部署方案 | 优势 | 代价 | 适用场景 |
|---|---|---|---|
| pip全量安装 | 依赖自动补齐,安装流程简单,5分钟即可完成环境配置 | 安装包体积约2GB,占用磁盘空间较大 | 新手快速验证功能、本地开发测试场景 |
| pip最小化安装 | 包体积极小,仅约200MB,可自定义选择加速依赖 | 需要手动安装FlashAttention等核心加速组件,配置流程复杂 | 有定制化加速需求、磁盘空间有限的场景 |
| Docker镜像部署 | 环境完全隔离,无依赖冲突问题,可一键迁移部署 | 镜像体积约5GB,需要提前安装Docker运行环境 | 生产环境部署、多节点一致性要求高的场景 |
| 源码编译安装 | 可修改源码适配定制需求,支持最新开发版功能 | 编译耗时约30分钟,需要配置CUDA、PyTorch等编译依赖 | 需要二次开发、贡献代码的研究人员 |
我们推荐新手用户优先选择pip全量安装的方式快速完成环境配置,验证功能正常后再根据实际需求选择其他部署方案;如果后续需要搭建高并发推理服务,可以在此基础上配置多卡张量并行、连续批处理等参数,进一步提升服务吞吐能力。
三、高并发服务核心参数配置
我们首先需要将张量并行度(TP)和物理GPU卡数完全对齐,这是SGLang发挥硬件算力的基础前提。比如你使用8张A100 80G部署模型,就必须将--tensor-parallel-size参数设为8,这样模型权重会被均匀切分到每张卡上,既避免单卡负载过高,又能大幅降低卡间通信开销。如果TP设置小于实际卡数会导致硬件浪费,设置超过卡数会直接触发启动报错,没有任何容错空间。
我们接下来要配置最大请求队列长度参数,这个参数直接控制等待处理的请求上限,能有效防止突发流量打满GPU内存导致OOM崩溃。SGLang默认的最大队列长度是1024,如果你的服务QPS峰值能达到2000,就必须把这个参数调整到2048以上,避免请求被直接丢弃。同时我们需要配合内存监控,如果队列经常处于满载状态,说明当前GPU的处理能力已经无法支撑流量,需要及时扩容或者优化模型结构。
KV缓存的内存占比我们通过--kv-cache-ratio参数调整,这个比例直接决定了单机能同时处理的请求数量上限,比例越高吞吐量越高,但预留内存不足会导致长序列请求处理时OOM。我们一般建议将这个比例设置在0.8到0.9之间,预留10%到20%的内存给算子缓存和系统开销,如果你的服务以短序列请求为主,甚至可以调到0.95,如果长序列请求占比高就调整到0.75左右。
# 输入示例:8卡A100部署7B模型的高并发启动命令
python -m sglang.launch_server \
--model-path /models/llama-2-7b-chat \
--tensor-parallel-size 8 \
--max-pending-requests 2048 \
--kv-cache-ratio 0.85 \
--port 30000
# 输出说明:启动成功后日志会打印以下内容
# INFO 05-20 14:30:22 server.py:123] Loaded model llama-2-7b-chat with TP=8
# INFO 05-20 14:30:23 server.py:145] Max pending requests set to 2048, KV cache ratio set to 0.85
# INFO 05-20 14:30:24 server.py:167] Server started at http://0.0.0.0:30000
| 方案 | 优势 | 代价 | 适用场景 |
|---|---|---|---|
| 默认参数配置 | 开箱即用无需额外调整,适合快速验证 | 并发能力低,突发流量下OOM概率超过40% | 测试环境、小流量验证场景 |
| 高并发优化配置(TP对齐卡数、队列2048、KV占比0.85) | 吞吐量提升2-3倍,OOM概率低于5% | 需要提前明确GPU卡数和流量峰值,参数调整成本低 | 生产环境常规高并发服务场景 |
| 长序列优化配置(KV占比0.7、队列1024) | 支持最长32K序列输入无OOM,长请求处理成功率提升60% | 整体吞吐量下降20%左右 | 长文档处理、超长对话交互场景 |
| 超大规模集群配置(多机TP、队列4096、KV占比0.8) | 单集群QPS可达万级,支持百万级日活 | 硬件成本高,运维复杂度大幅提升 | 互联网级大流量公共服务场景 |
我们推荐生产环境优先采用高并发优化配置,提前通过压测确认业务流量峰值后调整队列长度,KV缓存比例根据实际请求的序列长度动态调整。如果单机GPU卡数超过8张,建议采用多机张量并行部署方案,同时开启队列使用率监控告警,当队列使用率超过80%时自动触发扩容流程,保证服务的高可用性。
四、负载均衡与多卡集群部署
我们首先通过Nginx反向代理实现请求的分发,这是最通用的负载均衡方案。我们需要先在所有SGLang服务节点上启动对应实例,默认监听30000端口,确保节点间网络互通。Nginx的upstream配置中需要添加所有后端SGLang节点的地址,同时配置权重、故障阈值等参数,让请求能够按照预期策略分发到各个节点。
如果我们的集群节点是动态扩缩容的,不需要手动修改Nginx配置,我们可以结合服务注册发现组件实现节点的自动管理。SGLang实例启动时可以自动注册到Consul、Etcd或者K8s的服务注册中心,Nginx可以通过consul_template、K8s Ingress控制器等工具自动拉取最新的节点列表并热更新配置,整个过程无需重启Nginx服务,能够完美适配弹性扩缩容的业务需求。
为了保证多轮对话场景下请求的连续性,我们需要配置会话亲和性,避免同一个用户的请求被分发到不同的SGLang节点导致上下文丢失。我们可以通过Nginx的ip_hash指令基于客户端IP做哈希分发,也可以配置粘性会话(Sticky Session)基于Cookie实现,同时需要开启健康检查机制,当某个节点故障时自动将亲和性请求切换到其他健康节点,兼顾连续性与可用性。
# Nginx 负载均衡配置输入示例
upstream sglang_cluster {
# 会话亲和性配置,按客户端IP哈希分发
ip_hash;
# 后端SGLang节点列表,对应各节点的30000端口
server 192.168.1.10:30000 weight=3 max_fails=3 fail_timeout=30s;
server 192.168.1.11:30000 weight=2 max_fails=3 fail_timeout=30s;
server 192.168.1.12:30000 weight=2 max_fails=3 fail_timeout=30s;
# 健康检查配置,自动剔除故障节点
health_check interval=5s fails=2 passes=3;
}
server {
listen 80;
server_name sglang.example.com;
location / {
proxy_pass http://sglang_cluster;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
# 超时时间设置,适配长推理请求
proxy_connect_timeout 10s;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
}
}
# 输出说明:配置生效后,访问80端口的请求会按IP哈希分发到后端健康的SGLang节点,故障节点会在连续2次健康检查失败后被自动剔除,恢复后重新加入集群,权重高的节点会承担更多请求。
| 方案 | 优势 | 代价 | 适用场景 |
|---|---|---|---|
| Nginx原生负载均衡 | 配置灵活,支持自定义亲和性、健康检查、流量权重,可适配复杂业务需求 | 静态节点需要手动维护,动态扩缩容需配合注册中心组件 | 节点规模固定、对负载策略有定制需求的中小规模集群 |
| K8s Service负载均衡 | 原生支持节点自动发现与扩缩容,无需额外维护LB配置,自带健康检查能力 | 依赖K8s集群环境,七层自定义策略配置复杂度较高 | 容器化部署、节点动态变化的中大规模生产集群 |
| 云厂商托管负载均衡 | 无需运维LB本身,自带高可用与DDoS防护,开通即可使用 | 定制化能力弱,按流量/带宽计费成本较高 | 公有云部署、对运维效率要求高的生产环境 |
| SGLang内置负载均衡 | 无需额外部署组件,与推理框架深度集成,配置极简 | 仅支持基础轮询策略,无自定义亲和性与复杂健康检查能力 | 单机多卡部署、小规模功能测试场景 |
我们推荐生产环境部署多卡SGLang集群时,优先选择K8s Service配合Nginx做七层负载的方案,同时开启会话亲和性与主动健康检查,既能够适配动态扩缩容需求,又能够满足复杂业务的负载策略要求;如果是小规模测试或者单机多卡场景,直接使用SGLang内置的负载能力或者简单的Nginx轮询配置即可满足需求,部署完成后建议通过压测验证集群的吞吐量与故障转移能力,确保服务稳定性。
五、性能压测与瓶颈调优
我们首先使用SGLang官方自带的benchmark工具来获取服务的吞吐和延迟基线指标,这个工具支持模拟不同并发度、不同请求长度的真实推理场景,不需要额外编写压测脚本就能快速拿到首Token延迟、端到端延迟、每秒处理Token数等核心指标,跑出来的结果可以直接对应到我们实际业务的负载特征。
拿到压测结果之后,我们就可以根据指标曲线调整批处理大小参数,比如如果发现首Token延迟随并发度上升陡增,说明当前批处理大小设置过大,我们可以适当调小max-batch-size参数;如果吞吐量达不到硬件预期,说明批处理大小还有上调空间,我们可以逐步增大该参数直到吞吐和延迟达到平衡点。
对于高并发的服务场景,我们强烈建议开启连续批处理(Continuous Batching)功能,这个特性能让服务不用等待当前批次所有请求都处理完再接收新请求,而是有请求完成就立刻补充新请求进入批次,相比传统静态批处理能提升30%到50%的吞吐量,同时大幅降低长尾请求的延迟,是应对高并发场景的必备优化项。
# 输入示例:使用官方benchmark工具压测Llama-3-8B模型,模拟100个请求、并发度为16的场景
python -m sglang.benchmark \
--model meta-llama/Meta-Llama-3-8B-Instruct \
--num-prompts 100 \
--concurrency 16 \
--random-input-len 512 \
--random-output-len 128
# 输出说明:工具会打印核心性能指标,包括:
# 1. 吞吐量(Throughput):每秒处理的Token总数,单位tokens/s
# 2. 首Token延迟(Time to First Token, TTFT):从请求发出到收到第一个Token的时间,单位ms
# 3. 端到端延迟(End-to-End Latency):从请求发出到收到完整回复的时间,单位ms
# 4. P50/P95/P99延迟:不同分位的延迟统计,用于评估长尾表现
| 优化方案 | 优势 | 代价 | 适用场景 |
|---|---|---|---|
| 静态批处理(默认) | 实现简单无额外调度开销,逻辑稳定 | 长尾延迟高,吞吐利用率低 | 低并发、请求长度均匀的简单场景 |
| 开启连续批处理 | 吞吐提升30%~50%,长尾延迟降低20%以上 | 少量请求调度开销,内存占用微增 | 高并发、请求长度混合的生产环境 |
| 开启推测解码 | 首Token延迟降低20%+,生成速度提升 | 额外消耗约10%~15%的计算资源 | 对延迟敏感、交互性强的对话场景 |
| 开启前缀KV缓存 | 共享前缀请求的吞吐提升2~5倍 | 额外占用前缀对应的KV缓存内存 | 系统提示词固定、多轮对话场景 |
我们建议按照「跑基线压测→开启连续批处理→按需开启其他优化→二次压测验证」的流程完成调优,优先保证高并发场景下的吞吐和长尾延迟达标,再根据业务特性选择是否开启推测解码或KV缓存优化,最终把服务性能调整到最优状态。
六、常见故障排查与运维方案
我们在生产环境部署SGLang时最常遇到的故障就是CUDA OOM错误,这类问题通常不是模型本身显存占用过高,而是显存预留不足、KV缓存未及时释放或者队列过载导致的。首先我们可以通过nvidia-smi命令查看显存的实时占用情况,如果显存占用在服务空闲时仍然高于模型本身的理论显存占用,大概率是存在内存泄漏,常见原因包括自定义CUDA算子未正确释放显存、SGLang旧版本存在显存管理bug。我们可以通过nsight systems工具抓取显存分配trace,定位到具体的显存分配代码位置,如果是版本问题升级到最新稳定版即可解决,如果是自定义算子的问题需要修正算子的显存释放逻辑。对于正常的显存波动导致的OOM,我们只需要调整启动参数的显存预留比例即可规避。
请求超时问题通常和队列调度策略不合理直接相关,我们首先可以通过SGLang的运行日志查看请求的队列等待时间和推理处理时间,如果队列等待时间占总耗时的比例超过80%,说明是队列过载导致的超时,不需要调整模型推理相关的参数。我们可以通过调整--max-pending-requests参数限制最大待处理请求数,避免队列被大量请求挤满导致后续请求长时间等待,同时配置--max-total-tokens参数限制全局KV缓存的总容量,防止单个大文本请求占满全部显存,导致其他请求无法被调度。如果业务中存在高优先级的核心请求,我们还可以开启SGLang的优先级调度功能,给核心请求分配更高的调度权重,避免核心请求被长尾请求阻塞。
为了提前发现潜在故障,我们需要配置完善的日志采集和监控告警体系,我们通常会把SGLang的运行日志、请求指标和主机系统指标统一采集到Prometheus+Loki的监控栈中,方便后续的故障排查和容量规划。我们可以配置的核心告警规则包括:显存占用超过90%持续1分钟告警、待处理队列长度超过100告警、P99请求延迟超过2秒告警、CUDA OOM错误每分钟发生超过5次告警,这些规则可以覆盖90%以上的常见故障场景。我们还可以通过日志检索功能快速定位故障时间点的请求详情,比如某个请求的输入长度、排队时间、推理耗时,大幅缩短故障排查的时间。
# SGLang高并发部署启动配置示例,集成显存优化、队列调度与日志配置
python -m sglang.launch_server \
--model-path /models/Qwen2.5-72B-Instruct \
--mem-fraction-static 0.82 \ # 固定预留18%显存给系统与CUDA上下文开销,避免OOM
--max-pending-requests 256 \ # 最大待处理请求队列长度,超过的请求直接返回错误
--max-total-tokens 65536 \ # 全局KV缓存总容量,单位是token,避免显存被占满
--enable-priority-scheduling \ # 开启请求优先级调度,高优先级请求优先处理
--log-level DEBUG \ # 开启DEBUG级别日志,便于故障排查时抓取详细信息
--port 30000
运行上述命令启动服务后,SGLang会按照配置的显存预留比例和队列上限运行,若显存不足会优先淘汰最久未使用的KV缓存,超过队列长度的请求会直接返回429错误,不会导致服务雪崩。
| 优化方案 | 优势 | 代价 | 适用场景 |
|---|---|---|---|
| 调整mem-fraction-static显存预留比例 | 快速解决显存预留不足导致的CUDA OOM,配置简单 | 会略微降低单批次可处理的请求数量,显存利用率下降约5%-8% | 显存占用波动大、频繁出现CUDA OOM的部署场景 |
| 开启KV缓存动态淘汰策略 | 提升显存利用率,支持更高并发请求数 | 增加少量KV缓存的读写开销,延迟略有上升 | 高并发场景下显存不足、需要提升吞吐的场景 |
| 限制max-total-tokens全局上限 | 避免显存被单个大文本请求占满,降低队列阻塞概率 | 超长文本请求的通过率会降低 | 存在大量超长文本请求、队列阻塞严重的场景 |
| 配置请求优先级调度规则 | 保障高优先级核心请求的响应速度,避免业务受损 | 低优先级请求的平均等待时间会增加 | 有VIP核心业务、需要保障SLA的场景 |
我们建议大家在SGLang部署初期就根据模型的实际显存占用
七、生产环境安全与稳定性加固
我们部署SGLang推理服务到生产环境时,第一优先级就是开启API鉴权机制,默认情况下SGLang启动后会直接暴露8000端口,没有任何访问控制,任何知道服务地址的第三方都可以直接调用推理接口,不仅会泄露业务数据,还可能被恶意调用产生高额成本。我们可以通过配置静态API Key的方式快速实现基础鉴权,不需要额外依赖第三方组件,就能拦截绝大多数未授权的随机访问请求。如果是对外开放的多租户场景,还可以结合OAuth2协议实现细粒度的权限控制,不同租户只能访问自己授权的模型和接口。
除了鉴权之外,请求限流也是保障服务稳定性的核心配置,生产环境中经常会出现突发的大流量请求,比如爬虫批量抓取、客户端重试风暴、或者恶意DDoS攻击,如果没有限流机制,这些突发流量会直接打垮SGLang的推理队列,导致正常用户的请求超时,甚至服务进程崩溃。我们可以根据服务器的GPU显存和计算能力,合理配置最大并发请求数、最大排队请求数以及单用户QPS阈值,把超出处理能力的请求直接拒绝,保障核心业务的可用性。同时建议配合监控系统采集限流触发次数,一旦限流频率异常升高,就能第一时间发现流量异常或者服务性能退化的问题。
最后我们需要定期更新SGLang的框架版本,SGLang的迭代速度非常快,官方几乎每周都会发布小版本更新,其中经常包含安全漏洞修复、推理性能优化和新的功能特性,如果长期不更新版本,服务可能会暴露已知的安全漏洞,比如之前的路径遍历漏洞、接口未授权访问漏洞等,被攻击者利用。我们建议每周关注SGLang的官方GitHub Release公告,筛选出安全相关的更新优先升级,升级前先在测试环境验证兼容性,再逐步灰度到生产环境。同时要保留至少一个历史版本的回滚方案,一旦新版本出现兼容性问题可以快速恢复服务。
# 输入示例:SGLang启动时开启鉴权与限流的配置
sglang.launch_server(
model="meta-llama/Llama-3-8B-Instruct",
api_key="your_secure_api_key_here",
max_pending_requests=32,
max_running_requests=16,
enable_request_rate_limit=True,
rate_limit_qps=50
)
# 输出说明:
# 1. 所有推理接口调用需在请求Header中携带Authorization: Bearer {api_key}字段,缺失则返回401 Unauthorized错误
# 2. 单用户QPS超过50或全局排队请求数超过32时,直接返回429 Too Many Requests错误
# 3. 全局运行中的请求数超过16时,新请求进入排队队列,排队超时后返回504 Gateway Timeout错误
| 鉴权方案 | 优势 | 代价 | 适用场景 |
|---|---|---|---|
| 无鉴权 | 零配置,无额外性能损耗 | 完全无访问控制,数据泄露与恶意调用风险极高 | 本地开发测试环境 |
| 静态API Key鉴权 | 配置简单,性能损耗极低, |