现象
FastGPT 4.6.9版本启动后,日志显示服务在740ms后进入Ready状态,输出mongo start connect,随后出现Mongo相关报错:
[ERROR] 2024-03-14 02:46:29 response error: Operation `users.findOne()` buffering timed out after 10000ms
error-> mongo connect error u [MongooseServerSelectionError]: Server selection timed out after 30000 ms同时Mongo实例的日志显示正常启动流程,包含Updated wire specification、Clearing temp directory、Flow Control is enabled on this deployment等正常初始化信息,即Mongo本身运行正常,但FastGPT无法完成Mongo连接。
可能原因
核心报错为MongooseServerSelectionError,即Mongo服务器选择超时,尽管Mongo实例正常启动,但FastGPT服务无法与Mongo实例建立有效连接。可能的触发因素包括:FastGPT配置的Mongo连接参数错误,网络策略拦截了FastGPT与Mongo的通信,或Mongoose连接超时参数设置不合理。
排查步骤
- 核对FastGPT配置中的Mongo连接字符串,确认包含正确的Mongo实例地址、端口,以及认证信息(如启用了认证)。
- 在FastGPT服务所在的服务器上,使用网络连通性工具测试与Mongo实例的连接,例如执行
telnet <mongo地址> <mongo端口>,检查是否可以建立连接。 - 查看Mongo实例的完整日志,确认是否接收到FastGPT服务发起的连接请求,排查是否被防火墙、安全组拦截了通信流量。
- 检查FastGPT服务的Mongo连接初始化配置,确认超时参数的设置是否符合实际网络环境需求。
解决与验证
根据排查结果修正对应问题:若连接参数错误,修正配置后重启FastGPT服务;若网络被拦截,调整防火墙或安全组规则放行Mongo对应端口;若超时参数不合理,调整Mongoose连接超时配置。验证方式为重启FastGPT服务后,查看日志是否不再出现Mongo连接超时报错,且数据库相关业务功能可以正常运行。