首页/新闻资讯/正文详情

上线之后怎么验收:延迟限流与异步索引

发布时间:2026/11/5 7:54:51 来源:云帆数科 栏目:资讯中心
上线之后怎么验收:延迟限流与异步索引
上篇博客讲了怎么把个人项目挂到公网浏览器能登录、能上传、能问答算是把主链路跑通了。这篇主要是讲上线后的工程质量验收护栏会不会拒、会不会误伤异步索引是不是真在跑慢的时候大概慢在哪。例子还是用我的开源项目 DocPaws在 2 核 2G 演示机上做一轮。先搞清请求怎么走再按两条链路验收问答侧准备脚本 → 验限流 → 抽延迟上传/索引侧上传 → ready → 改一处找瓶颈一、一台机上请求怎么走/api开流前上传文档浏览器NginxAPI限流每分钟次数 / 同时几路模型流式回答任务队列Celery worker向量 / 索引 ready问答限流在真正开 SSE 之前就拦拦不住才去调模型。上传接口很快返回真正建索引的是后台 worker页面变成 ready才算这条链路完成。为什么非要拦在开流之前因为一旦已经出字模型调用、连接占用都花出去了超配额的请求还可能已经拿到内容——护栏等于白装。拦在前面才是省成本、让限流真管用。DocPaws 里常见配置在后端.env含义配置名示例演示机常用值开不开限流CHAT_RATE_LIMIT_ENABLEDtrue每分钟最多问几次CHAT_RATE_LIMIT_PER_MINUTE日常20测拒绝时临时改5同时最多几路问答CHAT_CONCURRENT_LIMIT默认常2改完.env一定要重启 APIDocPaws 用 systemd 时sudo systemctl restart docpaws-api。二、问答侧验收限流与延迟这一侧共用同一套东西登录态 固定题 小脚本。先准备好再验限流、再抽延迟。1. 准备浏览器走通登录 → 小 PDF 索引ready→ 能流式问答。开发者工具里抄三样Cookie 里的session登录态知识库kb_id一道固定问题为了做这轮验收我让 AI 写了个小脚本仓库里在eval/bench_chat_stream.py对同一道题反复打问答接口记首包多久开始出字和整段耗时多久答完撞上限流就拿 HTTP 429Too Many Requests表示「你问太勤被拒了」。用--mode切换几种验收场景就行——baseline抽延迟burst/pace验限流拒与不误杀verify改回日常频率后再确认。2. 验限流该拒则拒正常节奏不误杀为什么先验限流它像小区门禁太松闲杂人员随便进模型调用费可能被刷太紧业主自己也被挡在外面。所以要验两件事——它们其实是同一个机制的两个相反失败方向拒绝防漏问太勤该拦下来常见是 HTTP 429。漏了护栏等于没装。误杀防滥按正常人的节奏问不该被拦。滥了用户用不了这肯定也不行。临时把「每分钟次数」调严编辑后端.env例如改成每分钟只允许 5 次然后重启 APIsudosystemctl restart docpaws-api狂打看会不会拒本机python3 bench_chat_stream.py--modeburst我在演示机上的结果频率5连打 18 次前5次成功后面13次 429。说明超配额会被拦——护栏是活的。然后仍保持频率5但每次隔十几秒再问python3 bench_chat_stream.py--modepace我这边 8 次全成功、0 次 429。说明节奏已经低于配额时不会误伤。改回日常频率再验一遍把.env改回例如20重启 API再跑python3 bench_chat_stream.py--modeverify几乎没有 429。场景频率结果我的演示机狂打518 次里 13 次 429慢打58 次全过误杀 0改回后再验2010 次全过3. 抽一轮问答延迟限流验完、频率回到日常后再抽一轮体感基线——以后变慢了才知道相对什么变了python3 bench_chat_stream.py--modebaseline脚本串行问二三十次打出首包和整段的分位。首包TTFT多久出现第一条data:感觉开始出字。整段(E2E)多久答完大头多半在模型生成。次数不多看 P50 量级即可别当 SLA串行也说明不了多人同时问会怎样。在测试时我发现前二十几次还正常到大约第 24 次附近脚本报 HTTP 500系统繁忙。这和限流 429 不是一类事429 是护栏在拦这里是池子里借不到连接了。API 日志里能看到类似sqlalchemy.exc.TimeoutError: QueuePool limit of size 5 overflow 10 reached, connection timed out, timeout 30.00后面发现是问答路径把数据库连接握太久、没还干净——旧实现往往借一次就握到答完等模型吐字也占着名额。串行都能打满说明不是测太狠是资源生命周期有问题。后来把后端改成短借短还才能正常测完。我这轮测的数据25 次全过、无 429首包中位约 42ms整段中位约 11s。三、上传/索引侧验收1. 上传 → ready为什么单独验这一条上传接口返回「成功」和文档变成ready不是一回事——中间靠后台 worker。文件一直显示传输中往往是异步链路没起来或任务挂了。SSH 确认 worker 在跑上传前就挂上日志sudosystemctl status docpaws-workersudojournalctl-udocpaws-worker-f浏览器传一个不用太大的 PDF大约 12MB 就够了。看两样页面/状态何时变成ready日志里是否出现任务received→ 切块 / 向量 →succeeded。可选再开一个窗口用htop瞄一眼内存 CPU。我在 2C2G 上、约 2MB 样例任务大约0.40.9 秒就成功机器 Load 很低、内存大概用到 1G/1.57G 量级没有明显积压。2. 改一处再比找瓶颈只改一个配置项、同一路径前后对比才能把快慢钉到具体原因上。我把 Celery--concurrency同时能并行啃几条任务从默认调到 4再传差不多的小 PDF规模chunks改前改后约 11≈0.98s≈0.75s基本持平。一次只传一个文件时加 worker 数往往缩短不了这一单时间主要花在切块和 embedding文本转向量上。从而结论瓶颈不在 concurrency而在任务内 / 外部向量接口。四、进阶做法可选同时开几路问答并发租约「租约」可以理解成开一路问答就占一个名额答完或超时再还回来。DocPaws 除了「每分钟次数」还有「同时最多几路」。默认常常是 2。同一账号同时开 3 路应有人拿到 429错误码里常见是CONCURRENT_LIMITED「同时开太多路」和分钟桶的RATE_LIMITED「这一分钟问太勤」不同。三路都结束后马上再问一次应能通过——说明名额有释放。若只有「等很久再试」才恢复那测的是过期兜底不是「结束就释放」。两件事别混。Redis 挂了会怎样Redis 在这里常被限流拿来记「你已经问了几次 / 占了几路」。短停 Redis 再问理想是明确失败例如服务暂不可用而不是限流悄悄失效、人人狂打。

相关推荐

DeepSeek    LeetCode 518. 零钱兑换 II Java实现
DeepSeek LeetCode 518. 零钱兑换 II Java实现

LeetCode 518. 零钱兑换 II — Java 实现 题目思路 这是典型的完全背包问题:硬币可以无限次使用求组合数(不关心顺序)与 322 题(零钱兑换)的区别:322 求的是最少硬币数,本题求的是方案总数… · 2026/11/5 7:54:51

毕设/课设别再熬夜画图了!SpringBoot酒吧和夜店管理系统:功能结构图、流程图、数据流图、UML类图、时序图、用例图、三线表、用例表、开题报告,用捷码AI一键生成
毕设/课设别再熬夜画图了!SpringBoot酒吧和夜店管理系统:功能结构图、流程图、数据流图、UML类图、时序图、用例图、三线表、用例表、开题报告,用捷码AI一键生成

酒吧和夜店管理系统-综合设计成果/ ├── 00-交付清单/ manifest.json README ├── 01-系统图表/ 8 类系统图(E-R / 功能结构 / 数据流 / 架构 / 流程 / 类图 / 时序 / 用例) ├── 02-设计资料/ 数据库脚本 └── 03-交付成… · 2026/11/5 7:53:51

毕设/课设别再熬夜画图了!SpringBoot考务管理系统:功能结构图、流程图、数据流图、UML类图、时序图、用例图、三线表、用例表、开题报告,用捷码AI一键生成
毕设/课设别再熬夜画图了!SpringBoot考务管理系统:功能结构图、流程图、数据流图、UML类图、时序图、用例图、三线表、用例表、开题报告,用捷码AI一键生成

考务管理系统-综合设计成果/ ├── 00-交付清单/ manifest.json README ├── 01-系统图表/ 8 类系统图(E-R / 功能结构 / 数据流 / 架构 / 流程 / 类图 / 时序 / 用例) ├── 02-设计资料/ 数据库脚本 └── 03-交付成果/ … · 2026/11/5 7:53:51

预期功能安全SOTIF:无故障车辆为何仍会撞人?
预期功能安全SOTIF:无故障车辆为何仍会撞人?

简介:面向智能网联汽车功能安全从业者、系统与软件工程师及高校相关专业学习者,这份资料提供预期功能安全(SOTIF)领域的核心标准文本,重点解决自动驾驶与辅助驾驶系统在无故障情况下因性能局限、感知偏差和算法约束而引… · 2026/11/5 8:33:14

智能驾驶中的鸟瞰视角(BEV)技术解析与应用实践
智能驾驶中的鸟瞰视角(BEV)技术解析与应用实践

1. 鸟瞰视角在智能驾驶中的核心价值在智能驾驶系统中,鸟瞰视角(BEV,Birds Eye View)技术正逐渐成为环境感知的关键组成部分。与传统的前视或环视摄像头相比,鸟瞰视角通过将多个摄像头的图像拼接并投影到俯视平面&#… · 2026/11/5 8:33:14

vLLM分布式数据并行原理与调优实践
vLLM分布式数据并行原理与调优实践

1. 项目背景与核心概念 在大模型推理领域,分布式并行技术是突破单卡显存限制的关键手段。最近在调试一个基于vLLM框架的分布式数据并行(DP)实现时,遇到了几个典型问题。这里记录下vLLM中DP并行的实现原理、常见问题及解决方案。 vLLM作为当前最流行的高… · 2026/11/5 8:33:14

MySQL内置函数实战技巧与性能优化指南
MySQL内置函数实战技巧与性能优化指南

1. MySQL内置函数全面解析作为一名长期与MySQL打交道的开发者,我发现很多刚入门的同行对内置函数的理解仅限于表面用法。今天我将结合多年实战经验,深度剖析MySQL最常用的四类内置函数,带你掌握那些官方文档里没写的实用技巧。2. 日期函数实战… · 2026/11/5 8:33:14

0-1 BFS算法在水质检测最短路径问题中的应用
0-1 BFS算法在水质检测最短路径问题中的应用

1. 问题背景与算法选型蓝桥杯竞赛中的"水质检测"问题是一个典型的图论最短路径问题。题目通常描述为:给定一个NM的网格地图,其中某些网格是污染源(障碍物),检测员需要从起点出发,找到到达目标点的… · 2026/11/5 8:33:14

高效会议互动设计:10个实战方案提升40%会议效率
高效会议互动设计:10个实战方案提升40%会议效率

1. 会议互动环节设计的核心价值会议冷场和跑题是职场中最常见的两大痛点。根据我过去五年为37家企业设计会议流程的经验,传统会议模式中平均每小时的无效时间高达18分钟。而精心设计的互动环节能将会效提升40%以上,这个数据来自我们对实施新会议模式的23… · 2026/11/5 8:32:13

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

多智能体协作系统架构设计与实践优化
多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中… · 2026/11/5 0:00:39

大模型系统性入门实战指南:从原理到部署微调的全链路路线
大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#… · 2026/11/5 0:00:39

鸿蒙文件系统沙箱机制解析与开发实践
鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的… · 2026/11/5 0:00:39

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码