首页/AI/大模型部署与运维速查/同机连接:Unix domain socket

同机连接:Unix domain socket

网关与引擎同机时可用 Unix socket 替代 TCP 环回:省去少量网络栈开销,且天然不出主机;Nginx upstream 支持 unix 套接字,引擎侧支持情况以版本文档为准。

同机通信为什么用 Unix 域套接字

Unix 域套接字是内核内的进程间通信通道,不走网络协议栈,因此省去了环回接口上的少量处理开销,也天然不可能被主机之外的机器访问。当网关与推理引擎部署在同一台机器上时,把两者之间的连接从环回地址改成套接字文件是常见做法。需要注意的是,它带来的是链路层面的收敛,性能差异在整体推理耗时里通常不是主要变量。

基本信息

适用场景网关与引擎同机部署,替换环回地址连接
连接标识文件系统路径,如 /tmp 或运行目录下的套接字文件
访问控制依赖文件系统权限位与所在目录权限
客户端支持命令行工具需明确指定套接字路径
反向代理支持upstream 可直接指向套接字文件

典型使用场景

  • 同机网关转发:减少一层网络栈处理,链路更短
  • 避免端口占用:多实例启动时不必为每个引擎分配独立端口
  • 安全收敛:套接字文件权限收紧后,同机其他用户无法直连引擎
  • 容器内通信:同一容器或共享卷内的进程间调用
  • 本地调试:用命令行客户端直接对套接字发请求,排除网络因素

监听与访问

监听与访问
vllm serve <模型路径> --uds /run/llm/vllm.sock   # 部分版本支持,以文档为准
curl --unix-socket /run/llm/vllm.sock http://localhost/v1/models   # 不做 DNS 与端口解析
chmod 750 /run/llm && chmod 660 /run/llm/vllm.sock   # 收紧到运行用户与同组
ls -l /run/llm/vllm.sock                             # 复查权限位
# 反向代理侧:
# upstream llm { server unix:/run/llm/vllm.sock; }

两种连接方式对比

维度环回地址Unix 套接字
可达范围本机及被转发后的外部仅本机进程
访问控制依赖防火墙与监听地址依赖文件系统权限
端口占用每个实例需独立端口无端口,仅需文件路径
排查工具工具链成熟,抓包方便部分监控与抓包工具支持有限
适用判断需要跨机访问时使用同机且追求链路最简时使用
观测与探活工具对套接字的支持程度不一:切换前先确认监控采集与健康检查能覆盖这条链路,否则故障时缺少可见性。
套接字文件权限过宽时同机任何用户都能直连引擎:不仅要收紧文件本身,所在目录的权限也要一并处理。
套接字文件路径要避开会被系统清理的临时目录,也不要在服务重启后残留旧文件,否则新实例可能因为路径被占用而启动失败。

易错点

  • 套接字文件权限过宽:同机其他用户可绕过网关直连引擎,权限位与目录需一起收紧
  • 容器内外路径不一致:挂载点没对齐时客户端连不上,表现为连接被拒绝
  • 沿用仅支持网络地址的探活方式:健康检查失效,服务实际可用却被摘除
  • 期待它带来显著的性能提升:链路优化收益通常在整体耗时中占比很小,不要把它当成容量瓶颈的解法

数据来源与参考

  • Nginx 官方文档:upstream 的 unix socket(nginx.org/en/docs)
  • vLLM 官方文档:服务器参数(docs.vllm.ai)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌