TensorFlow Serving负载均衡器性能测试报告
背景
在实际生产环境中,我们对TensorFlow Serving的微服务架构进行了深入实践,特别是在Docker容器化部署和负载均衡配置方面遇到了不少坑。本文将分享我们在负载均衡器性能测试中的踩坑经历。
环境搭建
首先,我们使用Docker Compose进行容器化部署:
version: '3'
services:
tensorflow-serving:
image: tensorflow/serving:latest
container_name: tf_serving
ports:
- "8500:8500"
- "8501:8501"
volumes:
- ./models:/models
command: "tensorflow_model_server --model_base_path=/models --rest_api_port=8500 --grpc_port=8501"
负载均衡配置
我们测试了两种方案:Nginx反向代理和HAProxy。Nginx配置如下:
upstream tensorflow_servers {
server 127.0.0.1:8500;
server 127.0.0.1:8501;
}
server {
listen 80;
location / {
proxy_pass http://tensorflow_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
测试结果与踩坑记录
第一个坑:连接超时问题 Nginx默认超时时间过短,导致模型推理时间长的请求被中断。解决方法:增加proxy_connect_timeout 300s;和proxy_send_timeout 300s;
第二个坑:健康检查失效 由于TensorFlow Serving的REST API端口返回状态码200,Nginx误判为服务正常。我们改用gRPC端口进行健康检查。
第三个坑:并发处理瓶颈 发现Nginx单进程模式下QPS仅为150,通过调整worker_connections 10240和增加worker_processes auto后提升至800+。

讨论