解决 OceanBase 数据库连接超时问题
之前部署的 Dify,在知识库索引稍大一些的文档时,可能会出现索引失败的问题,错误信息:连接超时。之前在测试环境解决过,此次记录一下。
报错信息
Dify 索引失败的错误信息如下,OceanBase 的 ob_query_timeout 默认值为 10 秒,而 Dify 索引时,如果文档较大,会导致索引超时。
text
(pymysql.err.OperationalError) (4012, 'Timeout, query has reached the maximum query timeout: 10000000(us),
maybe you can adjust the session variable ob_query_timeout or query_timeout hint,
and try again.\n[172.53.104.54:2882] [2025-12-25 06:56:50.249184] [YB42AC356836-000646C10FCC7808-0-0]')
[SQL: INSERT INTO vector_index_76fbe8e6_ab76_4742_b744_e935c9c7a320_node (id, vector, text, metadata) VALUES (%(id_m0)s, %(vector_m0)s, %(text_m0)s, %(metadata_m0)s)]
[parameters: {'id_m0': '493cb2f7-87dc-4ed8-bbae-a77f11a34032', 'vector_m0': '[-0.086427055,0.012693111,-0.073518224,0.027267322,0.06392289,0.029200196,0.0319787,0.050910506,-0.012425615,0.070308276,0.059919078,0.061782923,-0.0 ... (12410 characters truncated) ... 056812674,-0.033290293,0.047804102,-0.032910623,-0.027888604,0.023090934,-0.028354565,-0.019345993,-0.01936325,-0.028423594,-0.034532856,0.019138899]', 'text_m0': '5.2广东某集团案例(扁平化办公组网)\n项目概述 客户是一家高科技大型股份制企业,主要从事生物医药、电子材料和健康养生三大产业。分支机构实现互联,进行数据传输,国外分支人员快速访问总部,同时有显性的云专线需求。\n项目规模 项目共涉及7个节点,含5个分支机构,1个阿里云节点其中分支节点10-60 ... (287 characters truncated) ... iew)\n略', 'metadata_m0': '{"source": "/tmp/tmp3dzhig68/e2_qkfi3.docx", "document_id": "57eded55-7423-4dcc-ac02-aa9bec4a7d16", "dataset_id": "76fbe8e6-ab76-4742-b744-e935c9c7a320", "doc_id": "493cb2f7-87dc-4ed8-bbae-a77f11a34032", "doc_hash": "6e2a71076ae6b2e6fe06bb77b92cb6dddb20fb970d882e631ede80b8e55d90f3"}'}] (Background on this error at: https://sqlalche.me/e/20/e3q8)解决方法
进入 oceanbase 容器,执行如下命令进行登录。
shell
obclient -h127.0.0.1 -P2881 -u root -pxxx -c -A -Dtest获取当前 ob_query_timeout 的值。
shell
# 不添加 GLOBAL 则只对 Session 生效
SHOW GLOBAL VARIABLES LIKE 'ob_query_timeout';text
+------------------+----------+
| Variable_name | Value |
+------------------+----------+
| ob_query_timeout | 10000000 |
+------------------+----------+
1 row in set (0.006 sec)修改 ob_query_timeout 的值为 864 秒。
shell
SET GLOBAL ob_query_timeout = 864000000;再次执行查询命令,查看修改后的值。
参考资料
- 影响 OceanBase 数据库连接超时的相关配置:https://www.oceanbase.com/knowledge-base/oceanbase-database-20000000127
