ArangoDB游标超时

sshcrbum  于 2022-12-09  发布在  Go
关注(0)|答案(3)|浏览(128)

使用ArangoDB 2.3.1。看起来我的游标在几分钟内就要过期了。我希望它们能持续一个小时。我已经用TTL参数设置了我的AQL查询对象,如下所示:

{
    "query": 'removed actual query',
    "count": true,
    "batchSize": 5,
    "ttl": 3600000
}

我的理解是TTL参数应该告诉服务器保持服务器3600000毫秒或1小时。但它在大约60秒内到期。事实上,我试过将TTL更改为几个不同的数字,它似乎没有任何作用。有什么想法吗?
UPDATE:我从arango收到的实际错误是“找不到游标”

gk7wooem

gk7wooem1#

你们都是对的,但是我认为2.3中有一个bug:

--- a/arangod/V8Server/v8-vocbase.cpp
+++ b/arangod/V8Server/v8-vocbase.cpp
@@ -1216,13 +1216,13 @@ static v8::Handle<v8::Value> JS_ExecuteAql (v8::Arguments const& argv) {

     optionName = v8::String::New("ttl");
     if (argValue->Has(optionName)) {
-      ttl = TRI_ObjectToBoolean(argValue->Get(optionName));
+      ttl = TRI_ObjectToDouble(argValue->Get(optionName));
       ttl = (ttl <= 0.0 ? 30.0 : ttl);
     }
  • ttl* 是一个双精度型,所以它应该被强制转换为双精度型,而不是布尔型。不幸的是,在C++中,将布尔型赋值给双精度型是有效的,所以编译器没有抱怨。
fwzugrvs

fwzugrvs2#

您是否尝试过使用timeout指令?
--server.keep-alive-timeout=X
其中X以秒为单位。
或者,您可以将此代码插入到arangod.conf文件的server部分下,作为
keep-alive-timout=X
根据手册
允许指定HTTP保持活动连接的超时。超时值必须以秒为单位。达到超时时,服务器将自动关闭空闲的保持活动连接。

qvtsj1bj

qvtsj1bj3#

[我也有过同样的问题,但是是在整个服务器范围内,我很难找到答案,这个问题在搜索中排在了第一位,所以我在这里记录下来,供后人参考。]
服务器范围内的设置为query.registry-ttl,与https://www.arangodb.com/docs/stable/programs-arangod-options.html相同,您可以使用以下命令获取当前服务器设置
要列出一个正在运行的arangod示例的配置选项,可以连接一个ArangoShell,并通过调用db._executeTransaction()调用一个Transaction,然后提供一个JavaScript函数来检索服务器选项:

arangosh> db._executeTransaction({ collections: {}, action: function() {return require("internal").options();} })

参见https://www.arangodb.com/docs/stable/administration-configuration.html#ex-listCurrentConfigOpts

相关问题