Configuration

    • Startup options you specify on a command line are referred to as command line options:

    • The same options can also be set via , using a slightly different syntax:

      server.database = myDB

    • There are also flags which are for command line usage only, such as ‑‑help and ‑‑version. They don’t take any value in contrast to options.

    Find the available options and flags in the Options sub-chapters of the respective Programs & Tools sub-chapter, like the .

    The ArangoDB Starter works differently to the other programs and tools. It uses setup.json files for its own and has a fluent command line interface to execute certain actions. If you deploy ArangoDB with the Starter, then custom arangod.conf files are generated by this tool and are used instead of the default configuration.

    Command line options

    Command line options can be supplied in the style ‑‑option value with two dashes (also known as hyphen minus), the name of the option, a space as separator and the value. You may also use an equals sign = as separator like ‑‑option=value.

    The value can be surrounded with double quote marks " like ‑‑option="value". This is mandatory if the value contains spaces, but it is optional otherwise.

    Some binaries accept one unnamed argument, which means you can take a shortcut and leave out the ‑‑option part and supply the value directly. It does not matter if you supply it as first or last argument, or between any of the named arguments. For arangod it is the ‑‑database.directory option. The following commands are identical:

    Many options belong to a section as in ‑‑section.param, e.g. ‑‑server.database, but there can also be options without any section. These options are referred to as general options.

    To list available options, you can run a binary with the ‑‑help flag:

    1. arangosh --help

    To list the options of a certain section only, use ‑‑help‑{section} like ‑‑help‑server. To list all options including hidden ones use ‑‑help‑..

    Configuration file format

    .conf files for ArangoDB binaries are in a simple key-value pair format. Each option is specified on a separate line in the form:

    1. key = value
    1. server.endpoint = tcp://127.0.0.1:8529
    2. server.authentication = true

    Alternatively, a header section can be specified and options pertaining to that section can be specified in a shorter form:

    1. [server]
    2. endpoint = tcp://127.0.0.1:8529
    3. authentication = true

    So you see, a command line option ‑‑section.param value can be easily translated to an option in a configuration file:

    1. [section]
    2. param = value

    Whitespace around = is ignored in configuration files. This includes whitespace around equality signs in the parameter value:

    It is the same as without whitespace:

    1. log.level=startup=trace

    Comments can be placed in the configuration file by placing one or more hash symbols # at the beginning of a line. Comments that are placed in other places (i.e. not at the beginning of a line) are unsupported and should be avoided to ensure correct parsing of the startup options as intended.

    Only command line options with a value should be set within the configuration file. Command line options which act as flags should only be entered on the command line when starting the server.

    For each binary (except arangodb, which is the Starter) there is a corresponding .conf file that an ArangoDB package ships with. arangosh.conf contains the default ArangoShell configuration for instance. The configuration files can be adjusted or new ones be created.

    To load a particular configuration file, there is a ‑‑configuration option available to let you specify a path to a .conf file. If you want to completely ignore a configuration file (likely the default one) without necessarily deleting the file, then add the command line option

    1. -c none

    or

    1. --configuration none

    The value none is case-insensitive.

    Suffixes for Numeric Options

    It is possible to add suffixes to numeric options that will cause ArangoDB to multiply the value by a certain factor. This can be used to conveniently specify values in megabytes or gigabytes for example.

    Suffix could be used like this in a configuration file:

    1. [rocksdb]
    2. write-buffer-size=512KiB
    3. block-cache-size=512MiB
    4. total-write-buffer-size=2GiB
    5. max-bytes-for-level-multiplier=1K
    6. [cache]
    7. size=2G

    Environment variables as parameters

    If you want to use an environment variable in a value of a startup option, write the name of the variable wrapped in at signs @. It acts as a placeholder. It can be combined with fixed strings for instance. For literal at signs in startup option arguments, escape them like @@.

    Command line example:

    1. arangod --temp.path @TEMP@/arango_tmp

    On a Windows system, above setting would typically make the ArangoDB Server create its folder for temporary files in %USERPROFILE%\AppData\Local\Temp, i.e. C:\Users\xxx\AppData\Local\Temp\arango_tmp.

    Certain startup options accept multiple values. In case of parameters being vectors you can specify one or more times the option with varying values. Whether this is the case can be seen by looking at the Type column of a tool’s option table (e.g. ArangoDB Server Options) or the type information provided on a command line in the --help output of an ArangoDB binary:

    1. --log.level <string...> the global or topic-specific log level

    Vectors can be identified by the three dots ... at the end of the data type information (in angled brackets). For log.level you can set one or more strings for different log levels for example. Simply repeat the option to do so. On a command line:

    1. arangod --log.level warning --log.level queries=trace --log.level startup=info

    This sets a log level of warning for the general topic (not globally!) and two topic-specific levels (trace for queries and info for startup).

    The same in a configuration file:

    1. [log]
    2. level = warning
    3. level = queries=trace
    4. level = startup=info

    Configuration precedence

    There are built-in defaults, with which all configuration variables are first initialized. They can be overridden by configuration files and command line options (in this order). Only a fraction of all available options are set in the configuration files that ArangoDB ships with. Many options will therefore fall back to the built-in defaults unless they are overridden by the user.

    It is common to use modified configuration files together with startup options on a command line to override specific settings. Command line options take precedence over values set in a configuration file.

    If the same option is set multiple times, but only supports a single value, then the last occurrence of the option will become the final value. For example, if you edit arangosh.conf to set:

    1. server.database = myDB1
    2. server.database = myDB2

    … and start ArangoShell like:

    1. arangosh --server.database myDB3 --server.database myDB4

    … then the database it will connect to is myDB4, because this startup option takes a single value only (i.e. it is not a vector), the built-in default is _system but the configuration file overrules the setting. It gets set to myDB1 temporarily before it is replaced by myDB2, which in turn gets overridden by the command line options twice, first to myDB3 and then the final value myDB4.

    Change configuration at runtime

    In general, supplied startup options can not be changed nor can configuration files be reloaded once an executable is started, other than by restarting the executable with different options. However, some of the startup options define default values which can be overridden on a per-query basis for instance, or adjusted at runtime via an API call. Examples:

    • via JavaScript API

    To list the configuration options of a running arangod instance, you can connect with an ArangoShell and invoke a by calling db._executeTransaction() and providing a JavaScript function to retrieve the server options:

    Show execution results

    Hide execution results

    1. {
    2. "check-configuration" : false,
    3. "config" : "/work/ArangoDB/etc/testing/arangod-single.conf",
    4. "configuration" : "/work/ArangoDB/etc/testing/arangod-single.conf",
    5. "console" : false,
    6. "daemon" : false,
    7. "default-language" : "en_US",
    8. "define" : [
    9. "TOP_DIR=/work/ArangoDB"
    10. ],
    11. "dump-dependencies" : false,
    12. "dump-options" : false,
    13. "fortune" : false,
    14. "gid" : "",
    15. "hund" : false,
    16. "log" : [
    17. "info",
    18. "info",
    19. "replication=warn"
    20. ],
    21. "pid-file" : "",
    22. "supervisor" : false,
    23. "uid" : "",
    24. "version" : false,
    25. "working-directory" : "/var/tmp",
    26. "agency.activate" : false,
    27. "agency.compaction-keep-size" : 50000,
    28. "agency.compaction-step-size" : 1000,
    29. "agency.disaster-recovery-id" : "",
    30. "agency.election-timeout-max" : 5,
    31. "agency.election-timeout-min" : 1,
    32. "agency.endpoint" : [ ],
    33. "agency.max-append-size" : 250,
    34. "agency.my-address" : "",
    35. "agency.pool-size" : 1,
    36. "agency.size" : 1,
    37. "agency.supervision" : false,
    38. "agency.supervision-frequency" : 1,
    39. "agency.supervision-grace-period" : 10,
    40. "agency.supervision-ok-threshold" : 5,
    41. "agency.wait-for-sync" : true,
    42. "arangosearch.commit-threads" : 2,
    43. "arangosearch.commit-threads-idle" : 2,
    44. "arangosearch.consolidation-threads" : 2,
    45. "arangosearch.consolidation-threads-idle" : 2,
    46. "arangosearch.threads" : 0,
    47. "arangosearch.threads-limit" : 0,
    48. "audit.hostname" : "",
    49. "audit.max-entry-length" : 134217728,
    50. "audit.output" : [ ],
    51. "backup.api-enabled" : "true",
    52. "backup.local-path-prefix" : "/",
    53. "cache.rebalancing-interval" : 2000000,
    54. "cache.size" : 15268124672,
    55. "cluster.agency-endpoint" : [ ],
    56. "cluster.create-waits-for-sync-replication" : true,
    57. "cluster.default-replication-factor" : 1,
    58. "cluster.force-one-shard" : false,
    59. "cluster.index-create-timeout" : 259200,
    60. "cluster.max-number-of-shards" : 1000,
    61. "cluster.max-replication-factor" : 10,
    62. "cluster.min-replication-factor" : 1,
    63. "cluster.my-advertised-endpoint" : "",
    64. "cluster.my-role" : "",
    65. "cluster.require-persisted-id" : false,
    66. "cluster.resign-leadership-on-shutdown" : false,
    67. "cluster.synchronous-replication-timeout-factor" : 1,
    68. "cluster.synchronous-replication-timeout-minimum" : 30,
    69. "cluster.synchronous-replication-timeout-per-4k" : 0.1,
    70. "cluster.system-replication-factor" : 2,
    71. "cluster.upgrade" : "auto",
    72. "cluster.write-concern" : 1,
    73. "database.auto-upgrade" : false,
    74. "database.check-version" : false,
    75. "database.directory" : "/tmp/arangosh_dLjMla/rocksdb-clusterOrNot/data",
    76. "database.force-sync-properties" : false,
    77. "database.ignore-datafile-errors" : false,
    78. "database.init-database" : false,
    79. "database.old-system-collections" : true,
    80. "database.required-directory-state" : "any",
    81. "database.restore-admin" : false,
    82. "database.throw-collection-not-loaded-error" : false,
    83. "database.upgrade-check" : true,
    84. "database.wait-for-sync" : false,
    85. "foxx.api" : true,
    86. "foxx.force-update-on-startup" : true,
    87. "foxx.queues" : true,
    88. "foxx.queues-poll-interval" : 1,
    89. "foxx.store" : true,
    90. "frontend.proxy-request-check" : true,
    91. "frontend.trusted-proxy" : [ ],
    92. "frontend.version-check" : true,
    93. "http.allow-method-override" : false,
    94. "http.hide-product-header" : false,
    95. "http.keep-alive-timeout" : 300,
    96. "http.permanently-redirect-root" : true,
    97. "http.trusted-origin" : [
    98. "*"
    99. ],
    100. "javascript.allow-admin-execute" : true,
    101. "javascript.allow-external-process-control" : false,
    102. "javascript.allow-port-testing" : false,
    103. "javascript.app-path" : "/tmp/arangosh_dLjMla/rocksdb-clusterOrNot/apps",
    104. "javascript.copy-installation" : false,
    105. "javascript.enabled" : true,
    106. "javascript.endpoints-blacklist" : [ ],
    107. "javascript.endpoints-whitelist" : [ ],
    108. "javascript.environment-variables-blacklist" : [ ],
    109. "javascript.environment-variables-whitelist" : [ ],
    110. "javascript.files-whitelist" : [ ],
    111. "javascript.gc-frequency" : 60,
    112. "javascript.gc-interval" : 2000,
    113. "javascript.harden" : false,
    114. "javascript.module-directory" : [
    115. "/work/ArangoDB/enterprise/js"
    116. ],
    117. "javascript.script" : [ ],
    118. "javascript.script-parameter" : [ ],
    119. "javascript.startup-directory" : "/work/ArangoDB/js",
    120. "javascript.startup-options-blacklist" : [ ],
    121. "javascript.startup-options-whitelist" : [ ],
    122. "javascript.v8-contexts" : 16,
    123. "javascript.v8-contexts-max-age" : 60,
    124. "javascript.v8-contexts-max-invocations" : 0,
    125. "javascript.v8-contexts-minimum" : 1,
    126. "javascript.v8-max-heap" : 3072,
    127. "javascript.v8-options" : [ ],
    128. "ldap.allow-offline" : false,
    129. "ldap.async-connect" : false,
    130. "ldap.basedn" : "",
    131. "ldap.binddn" : "",
    132. "ldap.debug" : false,
    133. "ldap.enabled" : false,
    134. "ldap.network-timeout" : 0,
    135. "ldap.port" : 389,
    136. "ldap.prefix" : "",
    137. "ldap.referrals" : false,
    138. "ldap.refresh-rate" : 300,
    139. "ldap.responsible-for" : "",
    140. "ldap.restart" : false,
    141. "ldap.retries" : 1,
    142. "ldap.roles-attribute-name" : "",
    143. "ldap.roles-exclude" : "",
    144. "ldap.roles-include" : "",
    145. "ldap.roles-search" : "",
    146. "ldap.roles-transformation" : [ ],
    147. "ldap.search-attribute" : "uid",
    148. "ldap.search-filter" : "objectClass=*",
    149. "ldap.search-scope" : "sub",
    150. "ldap.serialize-timeout" : 5,
    151. "ldap.serialized" : false,
    152. "ldap.server" : "",
    153. "ldap.suffix" : "",
    154. "ldap.superuser-role" : "",
    155. "ldap.timeout" : 0,
    156. "ldap.tls" : false,
    157. "ldap.tls-cacert-dir" : "",
    158. "ldap.tls-cacert-file" : "",
    159. "ldap.tls-cert-check-strategy" : "hard",
    160. "ldap.tls-version" : "1.2",
    161. "ldap.url" : "",
    162. "ldap2.allow-offline" : false,
    163. "ldap2.async-connect" : false,
    164. "ldap2.basedn" : "",
    165. "ldap2.binddn" : "",
    166. "ldap2.debug" : false,
    167. "ldap2.enabled" : false,
    168. "ldap2.network-timeout" : 0,
    169. "ldap2.port" : 389,
    170. "ldap2.prefix" : "",
    171. "ldap2.referrals" : false,
    172. "ldap2.refresh-rate" : 300,
    173. "ldap2.responsible-for" : "",
    174. "ldap2.restart" : false,
    175. "ldap2.retries" : 1,
    176. "ldap2.roles-attribute-name" : "",
    177. "ldap2.roles-exclude" : "",
    178. "ldap2.roles-include" : "",
    179. "ldap2.roles-search" : "",
    180. "ldap2.roles-transformation" : [ ],
    181. "ldap2.search-attribute" : "uid",
    182. "ldap2.search-filter" : "objectClass=*",
    183. "ldap2.search-scope" : "sub",
    184. "ldap2.serialize-timeout" : 5,
    185. "ldap2.serialized" : false,
    186. "ldap2.server" : "",
    187. "ldap2.suffix" : "",
    188. "ldap2.superuser-role" : "",
    189. "ldap2.timeout" : 0,
    190. "ldap2.tls" : false,
    191. "ldap2.tls-cacert-dir" : "",
    192. "ldap2.tls-cacert-file" : "",
    193. "ldap2.tls-cert-check-strategy" : "hard",
    194. "ldap2.tls-version" : "1.2",
    195. "ldap2.url" : "",
    196. "log.api-enabled" : "true",
    197. "log.color" : true,
    198. "log.escape" : true,
    199. "log.file" : "/tmp/arangosh_dLjMla/rocksdb-clusterOrNot/log",
    200. "log.file-group" : "",
    201. "log.file-mode" : "",
    202. "log.force-direct" : false,
    203. "log.foreground-tty" : false,
    204. "log.ids" : true,
    205. "log.in-memory-level" : "info",
    206. "log.keep-logrotate" : false,
    207. "log.level" : [
    208. "info",
    209. "info",
    210. "replication=warn"
    211. ],
    212. "log.line-number" : false,
    213. "log.max-entry-length" : 134217728,
    214. "log.output" : [
    215. "file:///tmp/arangosh_dLjMla/rocksdb-clusterOrNot/log"
    216. ],
    217. "log.performance" : false,
    218. "log.prefix" : "",
    219. "log.request-parameters" : true,
    220. "log.shorten-filenames" : true,
    221. "log.thread" : false,
    222. "log.thread-name" : false,
    223. "log.time-format" : "utc-datestring",
    224. "log.use-local-time" : false,
    225. "log.use-microtime" : false,
    226. "network.idle-connection-ttl" : 60000,
    227. "network.io-threads" : 1,
    228. "network.max-open-connections" : 1024,
    229. "network.protocol" : "",
    230. "network.verify-hosts" : false,
    231. "nonce.size" : 4194304,
    232. "query.cache-entries" : 128,
    233. "query.cache-entries-max-size" : 268435456,
    234. "query.cache-entry-max-size" : 16777216,
    235. "query.cache-include-system-collections" : false,
    236. "query.cache-mode" : "off",
    237. "query.max-parallelism" : 4,
    238. "query.max-runtime" : 0,
    239. "query.memory-limit" : 0,
    240. "query.optimizer-max-plans" : 128,
    241. "query.optimizer-rules" : [ ],
    242. "query.parallelize-gather-writes" : true,
    243. "query.parallelize-traversals" : true,
    244. "query.registry-ttl" : 30,
    245. "query.require-with" : false,
    246. "query.slow-streaming-threshold" : 10,
    247. "query.slow-threshold" : 10,
    248. "query.smart-joins" : true,
    249. "query.tracking" : true,
    250. "query.tracking-slow-queries" : true,
    251. "query.tracking-with-bindvars" : true,
    252. "query.tracking-with-datasources" : false,
    253. "query.tracking-with-querystring" : true,
    254. "random.generator" : 1,
    255. "rclone.executable" : "rclone-arangodb",
    256. "replication.active-failover" : false,
    257. "replication.auto-start" : true,
    258. "replication.automatic-failover" : false,
    259. "replication.connect-timeout" : 10,
    260. "replication.max-parallel-tailing-invocations" : 0,
    261. "replication.quick-keys-limit" : 1000000,
    262. "replication.request-timeout" : 600,
    263. "replication.sync-by-revision" : true,
    264. "rocksdb.allow-fallocate" : true,
    265. "rocksdb.block-align-data-blocks" : false,
    266. "rocksdb.block-cache-shard-bits" : -1,
    267. "rocksdb.block-cache-size" : 18321749606,
    268. "rocksdb.cache-index-and-filter-blocks" : false,
    269. "rocksdb.cache-index-and-filter-blocks-with-high-priority" : true,
    270. "rocksdb.compaction-read-ahead-size" : 2097152,
    271. "rocksdb.create-sha-files" : true,
    272. "rocksdb.debug-logging" : false,
    273. "rocksdb.delayed-write-rate" : 0,
    274. "rocksdb.dynamic-level-bytes" : true,
    275. "rocksdb.edge-cache" : true,
    276. "rocksdb.enable-pipelined-write" : false,
    277. "rocksdb.enable-statistics" : false,
    278. "rocksdb.encryption-gen-internal-key" : false,
    279. "rocksdb.encryption-key-generator" : "",
    280. "rocksdb.encryption-key-rotation" : false,
    281. "rocksdb.encryption-keyfile" : "",
    282. "rocksdb.encryption-keyfolder" : "",
    283. "rocksdb.enforce-block-cache-size-limit" : false,
    284. "rocksdb.exclusive-writes" : false,
    285. "rocksdb.intermediate-commit-count" : 1000000,
    286. "rocksdb.intermediate-commit-size" : 536870912,
    287. "rocksdb.level0-compaction-trigger" : 2,
    288. "rocksdb.level0-slowdown-trigger" : 20,
    289. "rocksdb.level0-stop-trigger" : 36,
    290. "rocksdb.limit-open-files-at-startup" : false,
    291. "rocksdb.max-background-jobs" : 8,
    292. "rocksdb.max-bytes-for-level-base" : 268435456,
    293. "rocksdb.max-bytes-for-level-multiplier" : 10,
    294. "rocksdb.max-parallel-compactions" : 2,
    295. "rocksdb.max-subcompactions" : 0,
    296. "rocksdb.max-total-wal-size" : 83886080,
    297. "rocksdb.max-transaction-size" : 18446744073709552000,
    298. "rocksdb.max-write-buffer-number" : 9,
    299. "rocksdb.max-write-buffer-size-to-maintain" : 0,
    300. "rocksdb.min-write-buffer-number-to-merge" : 1,
    301. "rocksdb.num-levels" : 7,
    302. "rocksdb.num-threads-priority-high" : 4,
    303. "rocksdb.num-threads-priority-low" : 4,
    304. "rocksdb.num-uncompressed-levels" : 2,
    305. "rocksdb.optimize-filters-for-hits" : false,
    306. "rocksdb.pin-l0-filter-and-index-blocks-in-cache" : false,
    307. "rocksdb.pin-top-level-index-and-filter" : true,
    308. "rocksdb.recycle-log-file-num" : false,
    309. "rocksdb.sync-delay-threshold" : 5000,
    310. "rocksdb.sync-interval" : 100,
    311. "rocksdb.table-block-size" : 16384,
    312. "rocksdb.target-file-size-base" : 67108864,
    313. "rocksdb.target-file-size-multiplier" : 1,
    314. "rocksdb.throttle" : true,
    315. "rocksdb.total-write-buffer-size" : 24428999475,
    316. "rocksdb.transaction-lock-timeout" : 1000,
    317. "rocksdb.use-direct-io-for-flush-and-compaction" : false,
    318. "rocksdb.use-direct-reads" : false,
    319. "rocksdb.use-file-logging" : false,
    320. "rocksdb.use-fsync" : false,
    321. "rocksdb.wal-archive-size-limit" : 0,
    322. "rocksdb.wal-directory" : "",
    323. "rocksdb.wal-file-timeout" : 10,
    324. "rocksdb.wal-file-timeout-initial" : 180,
    325. "rocksdb.wal-recovery-skip-corrupted" : false,
    326. "rocksdb.write-buffer-size" : 67108864,
    327. "server.allow-use-database" : true,
    328. "server.authentication" : false,
    329. "server.authentication-system-only" : true,
    330. "server.authentication-timeout" : 0,
    331. "server.authentication-unix-sockets" : true,
    332. "server.descriptors-minimum" : 0,
    333. "server.endpoint" : [
    334. "tcp://127.0.0.1:14788"
    335. ],
    336. "server.export-metrics-api" : true,
    337. "server.export-read-write-metrics" : false,
    338. "server.flush-interval" : 1000000,
    339. "server.gid" : "",
    340. "server.harden" : false,
    341. "server.io-threads" : 4,
    342. "server.local-authentication" : true,
    343. "server.maintenance-actions-block" : 2,
    344. "server.maintenance-actions-linger" : 3600,
    345. "server.maintenance-threads" : 5,
    346. "server.maximal-queue-size" : 4096,
    347. "server.maximal-threads" : 64,
    348. "server.minimal-threads" : 2,
    349. "server.prio1-size" : 4096,
    350. "server.rest-server" : true,
    351. "server.scheduler-queue-size" : 4096,
    352. "server.statistics" : true,
    353. "server.statistics-all-databases" : true,
    354. "server.statistics-history" : true,
    355. "server.storage-engine" : "rocksdb",
    356. "server.uid" : "",
    357. "server.unavailability-queue-fill-grade" : 1,
    358. "server.validate-utf8-strings" : true,
    359. "ssl.cafile" : "",
    360. "ssl.cipher-list" : "HIGH:!EXPORT:!aNULL@STRENGTH",
    361. "ssl.ecdh-curve" : "prime256v1",
    362. "ssl.keyfile" : "/work/ArangoDB/UnitTests/server.pem",
    363. "ssl.options" : 2147485780,
    364. "ssl.prefer-http1-in-alpn" : false,
    365. "ssl.protocol" : 9,
    366. "ssl.require-peer-certificate" : false,
    367. "ssl.server-name-indication" : [ ],
    368. "ssl.session-cache" : false,
    369. "tcp.backlog-size" : 64,
    370. "tcp.reuse-address" : true,
    371. "temp.path" : "/tmp/arangosh_dLjMla/rocksdb-clusterOrNot/tmp",
    372. "transaction.streaming-lock-timeout" : 8,
    373. "ttl.frequency" : 30000,
    374. "ttl.max-collection-removes" : 1000000,
    375. "ttl.max-total-removes" : 1000000,
    376. "ttl.only-loaded-collection" : true