现象
FastGPT私有部署版本V4.9.4中,在同一个对话会话(相同chatId)短时间内收到两条消息时,FastGPT更新chats集合的会话历史会触发MongoDB的WriteConflict报错,导致接口报错,前端或调用方收到错误响应。 FastGPT日志中会出现类似错误:
[Error] 2025-11-25 16:21:07 update chat history error
{
message: 'WriteConflict error: this operation conflicted with another operation. Please retry your operation or multi-document transaction.',
stack: 'MongoServerError: WriteConflict error: this operation conflicted with another operation. Please retry your operation or multi-document transaction.\n' +
' at O.sendCommand (/app/projects/app/.next/server/chunks/50290.js:4:65866)\n' +
' at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n' +
' at async O.command (/app/projects/app/.next/server/chunks/50290.js:4:66485)\n' +
' at async y.command (/app/projects/app/.next/server/chunks/50290.js:5:85007)\n' +
' at async a.executeCommand (/app/projects/app/.next/server/chunks/50290.js:5:26534)\n' +
' at async a.execute (/app/projects/app/.next/server/chunks/50290.js:5:61566)\n' +
' at async a.execute (/app/projects/app/.next/server/chunks/50290.js:5:61852)\n' +
' at async d (/app/projects/app/.next/server/chunks/50290.js:5:37622)\n' +
' at async h (/app/projects/app/.next/server/chunks/50290.js:5:35598)\n' +
' at async $.updateOne (/app/projects/app/.next/server/chunks/50290.js:4:105165)'
}MongoDB日志对应时间点附近会出现连接数短时间增加、长耗时事务写入的记录。
可能原因
同一会话短时间内触发多次会话历史更新操作,同时尝试修改MongoDB的chats集合文档,触发MongoDB的WriteConflict写入冲突。当前部署环境为docker-compose单实例FastGPT V4.9.4,MongoDB版本为5.0.18,为本地docker-compose部署的无分片无复制集实例,MongoDB连接未配置maxPoolSize等特殊参数。
排查步骤
- 确认报错日志中包含
WriteConflict error: this operation conflicted with another operation. Please retry your operation or multi-document transaction.错误信息,且触发场景为相同chatId短时间内收到多条消息。 - 查看MongoDB日志,确认对应时间点附近存在连接数短时间增加、长耗时事务写入的记录。
- 确认FastGPT部署方式为docker-compose单实例,MongoDB为无分片无复制集的本地部署。
- 确认MongoDB连接串未配置maxPoolSize等特殊参数,如需调整可补充相关配置。
解决与验证
可通过以下方式解决该问题:为FastGPT添加MongoDB WriteConflict重试机制,或调整MongoDB配置启用多文档事务,或对同会话的更新操作进行串行化处理以避免并发写入。 验证步骤为:修改配置后,在同一会话短时间内发送多条消息,确认不再触发WriteConflict报错,接口返回正常,MongoDB日志无对应错误信息。