【问题标题】:ArangoDB Cursor TimeoutArangoDB 光标超时
【发布时间】:2014-12-04 22:01:07
【问题描述】:

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

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

我的理解是TTL参数应该告诉服务器保持服务器3600000毫秒或1小时。但它会在大约 60 秒内过期。事实上,我已经尝试将 TTL 更改为几个不同的数字,但它似乎没有做任何事情。有什么想法吗?

更新:我从 arango 收到的实际错误是“找不到光标”

【问题讨论】:

  • 根据手册,游标的TTL是秒,不是毫秒。
  • TTL 应该让光标保持活动状态,以便您稍后调用。如果连接超时,ttl 将不会产生影响。
  • Arango 的实际错误是“未找到光标”,所以我认为这意味着光标超时且不再可用。有什么想法可以延长这个超时时间吗?

标签: cursor ttl arangodb content-expiration


【解决方案1】:

你们都是对的。但我认为这是 2.3 中的一个错误:

--- 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 是一个双精度数,因此应该将其转换为双精度数,而不是布尔值。 不幸的是,将 bool 分配给 double 在 C++ 中是有效的,因此编译器没有抱怨。

【讨论】:

  • 修复将随 2.3.2 一起发布
  • 关于如何在 2.3.2 之前解决或解决此问题的任何想法?谢谢!
  • 将它变成pre-2.3.2的唯一方法是在上面的位置修复源代码并重新编译。不过,2.3.2 应该很快(下周)就可以使用了。
  • 有没有办法改变整个数据库的 ttl 时间,而不仅仅是每次调用? .conf 文件中的 keep-alive-timeout 设置似乎对我不起作用。
【解决方案2】:

您是否尝试过使用超时指令?

--server.keep-alive-timeout=X

X 以秒为单位。

或者您可以将其插入到服务器部分下的 arangod.conf 文件中

keep-alive-timout=X

根据说明书

允许指定 HTTP keep-alive 连接的超时时间。超时值必须以秒为单位。达到超时时,服务器将自动关闭空闲的保活连接。

【讨论】:

  • 试过了,但我仍然收到“找不到光标”错误。
【解决方案3】:

[我也有同样的问题,但在服务器范围内,我很难找到答案,而且这个问题在搜索中排名靠前,所以我在此记录以供后代使用。]

服务器范围的设置是query.registry-ttl,根据https://www.arangodb.com/docs/stable/programs-arangod-options.html,您可以通过

获取当前服务器设置

要列出正在运行的 arangod 实例的配置选项,您 可以与 ArangoShell 连接并通过调用调用 Transaction db._executeTransaction() 并提供一个 JavaScript 函数 检索服务器选项:

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

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

【讨论】:

    猜你喜欢
    • 2018-07-10
    • 2016-08-25
    • 2017-03-18
    • 2019-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-21
    相关资源
    最近更新 更多