ArangoDB Время ожидания курсора

Использование ArangoDB 2.3.1. Кажется, мои курсоры истекают через пару минут. Я бы хотел, чтобы они длились час. Я настроил свой объект запроса AQL с параметром TTL следующим образом:

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

Насколько я понимаю, параметр TTL должен указывать серверу поддерживать сервер в течение 3600000 миллисекунд или 1 часа. Но это истекает в течение примерно 60 секунд. На самом деле, я попытался изменить TTL на несколько разных чисел, и он, похоже, ничего не делает. Есть идеи?

ОБНОВЛЕНИЕ: фактическая ошибка, которую я получаю от arango, является "курсор не найден"

3 ответа

Все вы правы. Но я думаю, что это ошибка в 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. К сожалению, назначение bool для double допустимо в C++, поэтому компилятор не жаловался.

Вы пытались использовать директиву тайм-аута?

--server.keep-alive-timeout=X

Где Х в секундах.

Или вы можете вставить это в файл arangod.conf в разделе сервера как

keep-alive-timout=X

Согласно инструкции

Позволяет указать тайм-аут для HTTP-соединений keep-alive. Значение времени ожидания должно быть в секундах. Неактивные соединения с поддержкой активности будут закрыты сервером автоматически по истечении времени ожидания.

[У меня был тот же вопрос, но на сервере, и мне было трудно найти ответ, и этот вопрос оказался в первых рядах поисковиков, поэтому я документирую здесь для потомков.]

Общесерверная настройка query.registry-ttl, согласно https://www.arangodb.com/docs/stable/programs-arangod-options.html, и вы можете получить текущие настройки сервера с помощью

Чтобы перечислить параметры конфигурации запущенного экземпляра arangod, вы можете подключиться к ArangoShell и вызвать транзакцию, вызвав db._executeTransaction () и предоставив функцию JavaScript для получения параметров сервера:

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

согласно https://www.arangodb.com/docs/stable/administration-configuration.html#ex-listCurrentConfigOpts

Другие вопросы по тегам