本地部署大模型,如何限制并发访问?

很多朋友在自己服务器上跑大模型,结果一个请求还没处理完,又涌进来几十个,直接导致显存爆满、服务崩溃。
今天我就以最常见的 Ollama 为例,教你从零开始限制并发访问,让模型平稳运行。

前置准备

你需要一台 Linux 服务器(我用的是 Ubuntu 22.04),并且已经安装好 Ollama 并拉取了模型(比如 llama3)。
确认服务正常运行:curl http://localhost:11434 返回 Ollama is running
如果你用的是其他框架(如 vLLM),原理类似,替换对应参数即可。

方法一:通过 Ollama 环境变量限制并行数

Ollama 原生支持设置最大并行处理请求数,这是最简单、最直接的方式。

  1. 编辑 Ollama 服务配置文件:
   sudo mkdir -p /etc/systemd/system/ollama.service.d
   sudo nano /etc/systemd/system/ollama.service.d/override.conf
  1. 写入以下内容(限制最多同时处理 2 个请求):
   [Service]
   Environment="OLLAMA_NUM_PARALLEL=2"
  1. 重载并重启服务:
   sudo systemctl daemon-reload
   sudo systemctl restart ollama
  1. 验证生效:systemctl show ollama | grep OLLAMA_NUM_PARALLEL 输出应显示 Environment=OLLAMA_NUM_PARALLEL=2

注意OLLAMA_NUM_PARALLEL 控制的是同时处理请求的数量,超过的请求会排队等待。
如果你的模型很小,可以适当调大(比如 4),否则建议 1~2。

方法二:使用 Nginx 反向代理限制并发连接

如果你希望从网络层做更精细的控制(比如限制某个 IP 的并发),Nginx 是通用方案。

  1. 安装 Nginx:sudo apt install nginx
  2. 创建反向代理配置(以限制同时最多 5 个连接为例):
   limit_conn_zone $binary_remote_addr zone=ollama:10m;
   
   server {
       listen 80;
       server_name your-domain-or-ip;

       location / {
           proxy_pass http://127.0.0.1:11434;
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;

           limit_conn ollama 5;
           limit_conn_status 503;  # 超出时返回 503
       }
   }
  1. 检查语法并重启:sudo nginx -t && sudo systemctl restart nginx
  2. 现在通过 Nginx 端口(80)请求,同一 IP 同时超过 5 个连接就会收到 503 错误。

避坑:Nginx 的 limit_conn 是基于共享内存的,需确保 limit_conn_zone 定义在 http 块内,且 zone 名称一致。
如果你的模型还用了多路复用(如 HTTP/2),注意 limit_conn 是基于单个连接而非请求数,需要配合 limit_req 做速率限制,本文不展开。

方法三:结合两者做双重保险

推荐同时使用 Ollama 环境变量(限制并行处理数)和 Nginx(限制并发连接数)。
环境变量防止模型内部过载,Nginx 防止大量恶意连接打满端口。
配置时注意:环境变量中的数值应小于或等于 Nginx 的并发上限,比如 Ollama 设 2,Nginx 设 5,这样排队控制在 Nginx 层,公平且安全。

效果验证与高频问题

  • 验证限制是否生效:用 ab 工具测试并发请求(需先安装 apache2-utils):
  ab -n 20 -c 10 http://localhost:11434/api/generate -p prompt.json

其中 prompt.json 需包含合法请求体。
观察返回的状态码和耗时,如果出现大量 503(Nginx 限流)或请求明显排队,说明限制生效。

  • 常见问题
  • 环境变量没生效?检查是否写对了配置文件,重启后 systemctl show ollama | grep OLLAMA_NUM_PARALLEL 是否有输出。
  • Nginx 返回 503 但我不想扔错误?可以自定义 error_page 503 /custom_503.html
  • 模型本身显存不够?先看 nvidia-smi,并发数 * 模型占用显存 < 总显存,否则模型会崩溃。

写在最后

限制本地部署大模型的并发访问,既能保护服务器稳定性,又能公平分配资源。
新手建议从方法一开始,熟练后再搭配 Nginx。
根据你的硬件配置(显存、内存)灵活调整数字,不要盲目贪大。
遇到问题先检查日志:journalctl -u ollama -f 会帮你快速定位。

希望这篇文章能帮到你。
如果你在配置过程中遇到其他报错,欢迎在评论区留言,我会尽力解答。

分享到:
上一篇
用 AI 写 Python 脚本,导致服务器被封禁端口
下一篇
服务器被挂马后,如何清理恶意代码并修复漏洞?
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意