Locust压测Rasa聊天机器人单用户场景下响应时间异常增长问题
单并发压测Rasa接口响应时间持续上涨的排查方向
并发恒定但响应时间单调上涨,本质是测试过程中存在随时间持续累积的资源开销,可按以下优先级逐项定位:
- Rasa内存追踪存储无自动清理机制
Rasa默认使用InMemoryTrackerStore内存存储对话状态,该存储不会自动过期、清理历史请求产生的会话上下文、NLP解析中间结果。随着请求量累积,进程内存占用持续升高,会触发频繁垃圾回收,甚至触发操作系统内存换页,直接拉长单请求处理耗时。压测时可同步观测Rasa进程的内存占用曲线,如果和响应时间走势完全吻合,可将追踪存储替换为配置了过期时间的Redis,或临时定期清空内存存储验证问题。 - NLP组件缓存无容量上限
Rasa内置的意图分类、实体识别组件默认开启预测结果缓存,若未配置最大缓存容量和淘汰策略,压测时发送的随机语句越多,缓存存储的键值对规模越大,不仅额外消耗内存,哈希表查询耗时也会随容量增长升高,最终拖慢整体请求处理速度。可修改config.yml中NLP组件的cache配置,设置固定容量的LRU缓存后重新压测验证。 - Locust脚本本身存在资源泄漏
如果压测脚本没有开启HTTP连接复用、每次请求后未完整消费响应体导致连接挂起、存在未释放的客户端资源,随着测试运行,压测机的文件句柄、内存占用会持续升高,最终统计出的响应时间会包含压测端自身的处理开销,属于服务端性能衰减的假象。可写一个直接返回固定字符串的Mock接口,用完全相同的压测脚本跑一轮,如果Mock接口也出现响应时间持续上涨,问题就出在压测脚本侧。 - 同步IO写入阻塞请求线程
若Rasa开启了Debug级全量日志、同步事件上报、请求全量落盘配置,随着日志文件、事件数据量持续增大,磁盘IO开销会逐步升高,同步写入逻辑会直接阻塞请求处理线程,导致响应时间随测试推进持续上涨。可临时关闭Debug日志、关闭同步上报配置后压测验证。
本次测试获取的Locust运行时统计结果如下:
内容的提问来源于stack exchange,提问作者helloworld
相关产品推荐
相关产品推荐

