生产力-4 卡 RTX 5060Ti 服务器 vLLM 性能测试报告

测试概览

|--------|-------------------------------------------|
| 项目 | 内容 |
| 测试时间 | 2026年06月23日 |
| 系统环境 | Ubuntu 22.04 LTS |
| 内核版本 | 6.8.0-106-generic |
| GPU配置 | 4 × NVIDIA GeForce RTX 5060Ti(16GB GDDR6) |
| 驱动版本 | 550.127.11 |
| CUDA版本 | 12.4 |
| 推理框架 | vLLM 0.20.2 |
| 测试模型 | Qwen3.6-27B-AWQ(AWQ 4bit量化) |
| 最大上下文 | 262,144 tokens (256K) |
| 部署方式 | Tensor Parallel ×4 + Nginx 反向代理 |

一、环境准备

1.1 磁盘挂载

服务器根分区仅 100GB,挂载 1.7TB NVMe 作为 /data:

sudo mkfs.ext4 /dev/nvme0n1
sudo mkdir -p /data
sudo mount /dev/nvme0n1 /data
echo '/dev/nvme0n1 /data ext4 defaults,noatime 0 2' | sudo tee -a /etc/fstab

1.2 VENV 虚拟环境

cd /data/vllm-deploy
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip setuptools wheel

1.3 安装核心依赖

pip install torch==2.5.1 --index-url https://download.pytorch.org/whl/cu124
pip install vllm==0.20.2
pip install transformers==4.48.3 accelerate sentencepiece protobuf

1.4 Triton 缓存迁移

避免根分区占满,将 Triton 编译缓存迁移到 /data:

mkdir -p /data/.triton /data/.cache/vllm /data/tmp
export TRITON_CACHE_DIR=/data/.triton
export TMPDIR=/data/tmp

二、模型下载

2.1 通过 ModelScope 下载(断点续传)

pip install -U modelscope
modelscope download \
--model qwen/Qwen3.6-27B-AWQ \
--local_dir /data/models/Qwen3.6-27B-AWQ \
--resume

模型大小:约 20.35 GiB(8 个 safetensors 分片)

三、vLLM 服务部署

3.1 极限上下文探测

逐步测试最大可运行上下文长度:

|---------------|------|-------------|-------|
| 探测长度 | 结果 | 单卡 KV Cache | 满长并发 |
| 64K (65536) | ✅ 成功 | 8.05 GB | 7.72× |
| 128K (131072) | ✅ 成功 | 7.59 GB | 7.29× |
| 256K (262144) | ✅ 成功 | 8.05 GB | 3.86× |

结论:4卡 RTX 5060Ti 16GB 在 AWQ 4bit + FP8 KV Cache 下,可稳定运行 256K 上下文。

3.2 正式启动命令

vllm serve /data/models/Qwen3.6-27B-AWQ \
--served-model-name Qwen3.6-27B-AWQ \
--trust-remote-code \
--tensor-parallel-size 4 \
--quantization awq \
--gpu-memory-utilization 0.90 \
--max-model-len 262144 \
--kv-cache-dtype fp8 \
--enforce-eager \
--disable-custom-all-reduce \
--distributed-executor-backend mp \
--reasoning-parser qwen3 \
--enable-auto-tool-choice \
--tool-call-parser qwen3_coder \
--block-size 16 \
--enable-prefix-caching \
--api-key sk-qwen-27b-lb-2026 \
--host 127.0.0.1 \
--port 8000

3.3 Nginx 反向代理配置

server {
listen 0.0.0.0:2000;
server_name _;

client_max_body_size 50m;
client_body_timeout 3600s;
client_header_timeout 3600s;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
proxy_connect_timeout 3600s;
send_timeout 3600s;

location / {
proxy_pass http://127.0.0.1:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host host;
proxy_set_header X-Real-IP remote_addr; proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
proxy_cache off;
}
}

**外网访问地址:**http://218.17.7.36:2000

**API Key:**sk-qwen-27b-lb-2026

四、性能测试

4.1 测试方法

使用自定义 Python 压测脚本(基于 aiohttp),通过 Nginx 代理访问 vLLM OpenAI 兼容 API:

python benchmark_vllm_v3.py --mode all

4.2 单请求延迟测试 (Latency)

|------------------|-----------|---------------|------------|------------|
| Prompt 长度 | MaxTokens | TTFT (首token) | 生成速度 | 备注 |
| 27 tokens (短文本) | 128 | 8.5s | 15.0 tok/s | prefill 较慢 |
| 96 tokens (中文本) | 512 | 33.2s | 15.4 tok/s | 线性增长 |
| 197 tokens (长文本) | 1024 | 66.5s | 15.4 tok/s | 满长测试 |

分析:

• TTFT 随 prompt 长度线性增长,prefill 速度约 2.5 tok/s(受 PCIe 带宽和 4卡 TP 通信限制)

• 生成速度稳定在 15.4 tok/s,不受 prompt 长度影响

4.3 并发吞吐测试 (Throughput)

|-----|-----|--------|------------|----------|-------|
| 并发数 | 总请求 | 完成时间 | 总输出吞吐 | 单请求 TTFT | 扩展效率 |
| 1 | 16 | 264.1s | 15.5 tok/s | 16.5s | 基准 |
| 2 | 16 | 138.6s | 29.6 tok/s | 17.3s | 1.91× |
| 4 | 16 | 69.4s | 59.0 tok/s | 17.3s | 3.81× |

分析:4 并发近乎线性扩展(效率 95%+),4卡 TP 调度良好

4.4 压力测试 (Stress, 60s)

|------|--------------|
| 指标 | 数值 |
| 并发 | 4 |
| 总请求 | 8 |
| 成功 | 8 / 8 (100%) |
| 失败 | 0 |
| 请求吞吐 | 0.12 req/s |
| 输出吞吐 | 59.3 tok/s |

五、与 llama.cpp 对比

|----------|----------------|------------|-------------------------|
| 指标 | llama.cpp (4卡) | vLLM (4卡) | 差异分析 |
| 单请求生成速度 | 40--45 tok/s | 15.4 tok/s | llama.cpp 更快(GGUF 内核优化) |
| 并发能力 | 弱(无调度) | 强(线性扩展) | vLLM 大幅领先 |
| 上下文长度 | 16K | 256K | vLLM 16× |
| API 兼容性 | 无 | OpenAI 兼容 | vLLM 生态优势 |
| 工具调用 | 无 | 原生支持 | vLLM 功能更强 |
| 量化格式 | GGUF Q4_K_M | AWQ 4bit | 各有利弊 |
| KV Cache | 无优化 | FP8 量化 | vLLM 显存效率更高 |

结论:

• llama.cpp:适合单机低延迟、离线批处理、对速度敏感的场景

• vLLM:适合高并发 API 服务、长上下文、Agent 工具调用、企业部署

六、核心结论

**1.**4卡 RTX 5060Ti 可稳定运行 27B 级 AWQ 4bit 模型,上下文上限 256K

**2.**生成速度稳定在 15.4 tok/s,并发扩展线性至 4 路(总吞吐 59 tok/s)

**3.**Prefill 是瓶颈(TTFT 随 prompt 线性增长),受 PCIe 带宽限制,消费卡无解

**4.**256K 上下文下满长并发约 3.86×,实际混合负载可支持更高并发

**5.**适合场景:长文档分析、RAG、代码生成、Agent 工具调用、API 服务化部署

七、推荐配置

|------------------------|----------|---------------------|
| 配置项 | 推荐值 | 说明 |
| 量化格式 | AWQ 4bit | 平衡速度与显存 |
| KV Cache | FP8 | 节省 50% 显存 |
| gpu-memory-utilization | 0.90 | 留 10% 余量防 OOM |
| max-model-len | 262144 | 256K 满长 |
| tensor-parallel-size | 4 | 4卡并行 |
| block-size | 16 | 与 mamba 对齐 |
| prefix-caching | 开启 | 重复 prompt 复用 KV |
| enforce-eager | 开启 | 稳定性优先,牺牲 10--20% 速度 |

八、Systemd 持久化配置

vLLM 服务

Unit

Description=vLLM Qwen3.6-27B-AWQ (4x RTX 5060Ti)
After=network.target

Service

Type=simple
User=rainbow7
WorkingDirectory=/data/vllm-deploy
Environment="PATH=/data/vllm-deploy/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
Environment="TRITON_CACHE_DIR=/data/.triton"
Environment="TMPDIR=/data/tmp"
Environment="CUDA_VISIBLE_DEVICES=0,1,2,3"
Environment="OMP_NUM_THREADS=1"
Environment="VLLM_ENGINE_ITERATION_TIMEOUT_S=3600"

ExecStart=/data/vllm-deploy/venv/bin/vllm serve /data/models/Qwen3.6-27B-AWQ \
--served-model-name Qwen3.6-27B-AWQ \
--trust-remote-code \
--tensor-parallel-size 4 \
--quantization awq \
--gpu-memory-utilization 0.90 \
--max-model-len 262144 \
--kv-cache-dtype fp8 \
--enforce-eager \
--disable-custom-all-reduce \
--distributed-executor-backend mp \
--reasoning-parser qwen3 \
--enable-auto-tool-choice \
--tool-call-parser qwen3_coder \
--block-size 16 \
--enable-prefix-caching \
--api-key sk-qwen-27b-lb-2026 \
--host 127.0.0.1 \
--port 8000

Restart=always
RestartSec=10

Install

WantedBy=multi-user.target

九、常见问题

1. OOM 或显存不足

  • 降低 --gpu-memory-utilization 至 0.85,或降低 --max-model-len

2. 只识别部分卡

  • 检查 nvidia-smi,确认 PCIe 通道正常,重启服务器

3. NCCL 通信错误

  • 加 --disable-custom-all-reduce,消费卡无 P2P 直连

4. Triton 编译缓存占满根分区

  • 设置 TRITON_CACHE_DIR=/data/.triton

5. 长文本 Prefill 慢

  • 正常现象,消费卡 PCIe 带宽限制,建议缩短 prompt 或分块处理

附录:测试环境详细信息

|--------------|------------------------------------|
| 组件 | 版本 |
| GPU | 4 × NVIDIA GeForce RTX 5060Ti 16GB |
| Driver | 550.127.11 |
| CUDA | 12.4 |
| vLLM | 0.20.2 |
| PyTorch | 2.5.1+cu124 |
| Transformers | 4.48.3 |
| Python | 3.10.12 |
| OS | Ubuntu 22.04.5 LTS |
| Kernel | 6.8.0-106-generic |
| Nginx | 1.18.0 |