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