故障排查GitHub issue5 分钟阅读排错/错误码

解决FastGPT V4.9.4同会话短时间多消息触发MongoDB WriteConflict报错

FastGPT私有部署版本V4.9.4中,在同一个对话会话(相同chatId)短时间内收到两条消息时,FastGPT更新chats集合的会话历史会触发MongoDB的WriteConflict报错,导致接口报错,前端或调用方收到错误响应。

现象

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等特殊参数。

排查步骤

  1. 确认报错日志中包含WriteConflict error: this operation conflicted with another operation. Please retry your operation or multi-document transaction.错误信息,且触发场景为相同chatId短时间内收到多条消息。
  2. 查看MongoDB日志,确认对应时间点附近存在连接数短时间增加、长耗时事务写入的记录。
  3. 确认FastGPT部署方式为docker-compose单实例,MongoDB为无分片无复制集的本地部署。
  4. 确认MongoDB连接串未配置maxPoolSize等特殊参数,如需调整可补充相关配置。

解决与验证

可通过以下方式解决该问题:为FastGPT添加MongoDB WriteConflict重试机制,或调整MongoDB配置启用多文档事务,或对同会话的更新操作进行串行化处理以避免并发写入。 验证步骤为:修改配置后,在同一会话短时间内发送多条消息,确认不再触发WriteConflict报错,接口返回正常,MongoDB日志无对应错误信息。

来源:FastGPT GitHub issue