diff --git a/site/data/3.10/allMetrics.yaml b/site/data/3.10/allMetrics.yaml index 37c4aa4c82..4ad776f168 100644 --- a/site/data/3.10/allMetrics.yaml +++ b/site/data/3.10/allMetrics.yaml @@ -3786,6 +3786,25 @@ The number of worker threads currently working on some job or spinning while waiting for new work (i.e., not sleeping). +- name: arangodb_scheduler_num_detached_threads + introducedIn: "3.10.13" + help: | + Current number of detached worker threads. + unit: number + type: gauge + category: Scheduler + complexity: simple + exposedBy: + - coordinator + - dbserver + - agent + - single + description: | + The number of worker threads currently started and detached from the + scheduler. Worker threads which perform potentially long running + tasks like waiting for a lock can detach themselves from the scheduler + to allow new scheduler threads to be started and avoid server blockage. + - name: arangodb_scheduler_num_worker_threads introducedIn: "3.6.7" help: | @@ -3800,8 +3819,9 @@ - agent - single description: | - The number of worker threads currently started. Worker threads can be started - and stopped dynamically based on the server load. + The number of worker threads currently started. This includes detached + worker threads. Worker threads can be started and stopped dynamically + based on the server load. - name: arangodb_scheduler_num_working_threads introducedIn: "3.6.10" diff --git a/site/data/3.10/arangod.json b/site/data/3.10/arangod.json index 9154ffd101..c56a4a3cc1 100644 --- a/site/data/3.10/arangod.json +++ b/site/data/3.10/arangod.json @@ -12087,6 +12087,40 @@ "section" : "server", "type" : "uint32" }, + "server.max-number-detached-threads" : { + "base" : 1, + "category" : "option", + "component" : [ + "coordinator", + "dbserver", + "agent", + "single" + ], + "default" : 1000, + "deprecatedIn" : null, + "description" : "The maximum number of detached scheduler threads.", + "dynamic" : false, + "enterpriseOnly" : false, + "experimental" : false, + "hidden" : true, + "introducedIn" : [ + "v3.10.13" + ], + "longDescription" : "If a scheduler thread performs a potentially long running operation like waiting for a lock, it can detach itself from the scheduler. This allows a new scheduler thread to be started and avoids blocking all threads with long-running operations, thereby avoiding deadlock situations. The default should normally be OK.", + "maxInclusive" : true, + "maxValue" : 18446744073709551615, + "minInclusive" : true, + "minValue" : 0, + "obsolete" : false, + "os" : [ + "linux", + "macos", + "windows" + ], + "requiresValue" : true, + "section" : "server", + "type" : "uint64" + }, "server.maximal-queue-size" : { "base" : 1, "category" : "option", diff --git a/site/data/3.10/errors.yaml b/site/data/3.10/errors.yaml index b1eb68d3db..44e0b145da 100644 --- a/site/data/3.10/errors.yaml +++ b/site/data/3.10/errors.yaml @@ -1339,6 +1339,10 @@ text: "queue time violated" desc: "Will be returned if a request with a queue time requirement is set and it cannot be fulfilled." code: 21004 +- name: ERROR_TOO_MANY_DETACHED_THREADS + text: "too many detached scheduler threads" + desc: "Will be returned if a scheduler thread tries to detach itself but there are already too many detached scheduler threads." + code: 21005 - group: Maintenance errors - name: ERROR_ACTION_OPERATION_UNABORTABLE text: "this maintenance action cannot be stopped" diff --git a/site/data/3.12/arangod.json b/site/data/3.12/arangod.json index 8c9476dd97..9f6b96665b 100644 --- a/site/data/3.12/arangod.json +++ b/site/data/3.12/arangod.json @@ -10295,9 +10295,9 @@ "agent", "single" ], - "default" : 10, + "default" : 12, "deprecatedIn" : null, - "description" : "The maximum number of write buffers that build up in memory (default: number of column families + 2 = 9 write buffers). You can only increase the number.", + "description" : "The maximum number of write buffers that build up in memory (default: number of column families + 2 = 12 write buffers). You can only increase the number.", "dynamic" : false, "enterpriseOnly" : false, "experimental" : false, @@ -10483,6 +10483,39 @@ "section" : "rocksdb", "type" : "uint64" }, + "rocksdb.max-write-buffer-number-mdi-prefixed" : { + "base" : 1, + "category" : "option", + "component" : [ + "coordinator", + "dbserver", + "agent", + "single" + ], + "default" : 0, + "deprecatedIn" : null, + "description" : "If non-zero, overrides the value of `--rocksdb.max-write-buffer-number` for the mdi-prefixed column family", + "dynamic" : false, + "enterpriseOnly" : false, + "experimental" : false, + "hidden" : true, + "introducedIn" : [ + "v3.8.0" + ], + "maxInclusive" : true, + "maxValue" : 18446744073709551615, + "minInclusive" : true, + "minValue" : 0, + "obsolete" : false, + "os" : [ + "linux", + "macos", + "windows" + ], + "requiresValue" : true, + "section" : "rocksdb", + "type" : "uint64" + }, "rocksdb.max-write-buffer-number-primary" : { "base" : 1, "category" : "option", @@ -10582,6 +10615,39 @@ "section" : "rocksdb", "type" : "uint64" }, + "rocksdb.max-write-buffer-number-zkd" : { + "base" : 1, + "category" : "option", + "component" : [ + "coordinator", + "dbserver", + "agent", + "single" + ], + "default" : 0, + "deprecatedIn" : null, + "description" : "If non-zero, overrides the value of `--rocksdb.max-write-buffer-number` for the zkd column family", + "dynamic" : false, + "enterpriseOnly" : false, + "experimental" : false, + "hidden" : true, + "introducedIn" : [ + "v3.8.0" + ], + "maxInclusive" : true, + "maxValue" : 18446744073709551615, + "minInclusive" : true, + "minValue" : 0, + "obsolete" : false, + "os" : [ + "linux", + "macos", + "windows" + ], + "requiresValue" : true, + "section" : "rocksdb", + "type" : "uint64" + }, "rocksdb.max-write-buffer-size-to-maintain" : { "base" : 1, "category" : "option", @@ -10946,6 +11012,35 @@ "section" : "rocksdb", "type" : "boolean" }, + "rocksdb.partition-files-for-mdi-index" : { + "category" : "option", + "component" : [ + "dbserver", + "agent", + "single" + ], + "default" : false, + "deprecatedIn" : null, + "description" : "If enabled, the index data for different mdi indexes will end up in different .sst files.", + "dynamic" : false, + "enterpriseOnly" : false, + "experimental" : true, + "hidden" : true, + "introducedIn" : [ + "v3.12.0" + ], + "longDescription" : "Enabling this option will make RocksDB's\n compaction write the persistent index data for different mdi\n indexes (also indexes from different collections/shards) into different\n .sst files. Otherwise the persistent index data from different\n collections/shards/indexes can be mixed and written into the same .sst files.\n\n Enabling this option usually has the benefit of making the RocksDB\n compaction more efficient when a lot of different collections/shards/indexes\n are written to in parallel.\n The disavantage of enabling this option is that there can be more .sst\n files than when the option is turned off, and the disk space used by\n these .sst files can be higher than if there are fewer .sst files (this\n is because there is some per-.sst file overhead).\n In particular on deployments with many collections/shards/indexes\n this can lead to a very high number of .sst files, with the potential\n of outgrowing the maximum number of file descriptors the ArangoDB process\n can open. Thus the option should only be enabled on deployments with a\n limited number of edge collections/shards/indexes.", + "obsolete" : false, + "os" : [ + "linux", + "macos", + "windows" + ], + "required" : false, + "requiresValue" : false, + "section" : "rocksdb", + "type" : "boolean" + }, "rocksdb.partition-files-for-persistent-index" : { "category" : "option", "component" : [ @@ -12390,13 +12485,13 @@ "tcp://0.0.0.0:8529" ], "deprecatedIn" : null, - "description" : "Endpoint for client requests (e.g. `http+tcp://127.0.0.1:8529`, or `vst+ssl://192.168.1.1:8529`)", + "description" : "Endpoint for client requests (e.g. `http://127.0.0.1:8529`, or `https://192.168.1.1:8529`)", "dynamic" : false, "enterpriseOnly" : false, "experimental" : false, "hidden" : false, "introducedIn" : null, - "longDescription" : "You can specify this option multiple times to let\nthe ArangoDB server listen for incoming requests on multiple endpoints.\n\nThe endpoints are normally specified either in ArangoDB's configuration file or\non the command-line with `--server.endpoint`. ArangoDB supports different types\nof endpoints:\n\n- `tcp://ipv4-address:port` - TCP/IP endpoint, using IPv4\n- `tcp://[ipv6-address]:port` - TCP/IP endpoint, using IPv6\n- `ssl://ipv4-address:port` - TCP/IP endpoint, using IPv4, SSL encryption\n- `ssl://[ipv6-address]:port` - TCP/IP endpoint, using IPv6, SSL encryption\n- `unix:///path/to/socket` - Unix domain socket endpoint\n\nIf a TCP/IP endpoint is specified without a port number, then the default port\n(8529) is used.\n\nIf you use SSL-encrypted endpoints, you must also supply the path to a server\ncertificate using the `--ssl.keyfile` option.\n\n```bash\narangod --server.endpoint tcp://127.0.0.1:8529 \\\n --server.endpoint ssl://127.0.0.1:8530 \\\n --ssl.keyfile server.pem /tmp/data-dir\n\n2022-11-07T10:39:29Z [1] INFO [e52b0] {general} ArangoDB 3.10.0 [linux] 64bit, using jemalloc, build tags/v3.10.0-0-g207ec6937e4, VPack 0.1.36, RocksDB 7.2.0, ICU 64.2, V8 7.9.317, OpenSSL 1.1.1q 5 Jul 2022\n2022-11-07T10:39:29Z [1] INFO [75ddc] {general} detected operating system: Linux version 4.15.0-140-generic (buildd@lgw01-amd64-054) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)) #144-Ubuntu SMP Fri Mar 19 14:12:35 UTC 2021\n2022-11-07T10:39:29Z [1] INFO [25362] {memory} Available physical memory: 67513589760 bytes, available cores: 32\n2022-11-07T10:39:29Z [1] INFO [a1c60] {syscall} file-descriptors (nofiles) hard limit is 1048576, soft limit is 1048576\n2022-11-07T10:39:29Z [1] INFO [3bb7d] {cluster} Starting up with role SINGLE\n2022-11-07T10:39:29Z [1] INFO [f6e0e] {aql} memory limit per AQL query automatically set to 40508153856 bytes. to modify this value, please adjust the startup option `--query.memory-limit`\n2022-11-07T10:39:30Z [1] INFO [fe333] {engines} RocksDB recovery starting, scanning WAL starting from sequence number 91, latest sequence number: 202, files in archive: 0\n2022-11-07T10:39:30Z [1] INFO [a4ec8] {engines} RocksDB recovery finished, WAL entries scanned: 116, recovery start sequence number: 91, latest WAL sequence number: 202, max tick value found in WAL: 24, last HLC value found in WAL: 1748833470939922432\n2022-11-07T10:39:30Z [1] INFO [c1b63] {arangosearch} ArangoSearch maintenance: [5..5] commit thread(s), [5..5] consolidation thread(s)\n2022-11-07T10:39:30Z [1] INFO [6ea38] {general} using endpoint 'http+ssl://0.0.0.0:8530' for ssl-encrypted requests\n2022-11-07T10:39:30Z [1] INFO [6ea38] {general} using endpoint 'http+tcp://0.0.0.0:8529' for non-encrypted requests\n2022-11-07T10:39:31Z [1] INFO [cf3f4] {general} ArangoDB (version 3.10.0 [linux]) is ready for business. Have fun!\n```\n\nOn one specific ethernet interface, each port can only be bound\n**exactly once**. You can look up your available interfaces using the `ifconfig`\ncommand on Linux / macOS, and `ipconfig` on Windows. The general names of the\ninterfaces differ between operating systems and the hardware they run on.\nHowever, every host has typically a so called loopback interface, which is a\nvirtual interface. By convention, it always has the address `127.0.0.1` (IPv4)\nor `::1` (IPv6), and can only be reached from the very same host. Ethernet\ninterfaces usually have names like `eth0`, `wlan0`, `eth1:17`, `le0`, or a\nplain text name in Windows.\n\nTo find out which services already use ports (so ArangoDB can't bind them\nanymore), you can use the `netstat` command. It behaves a little different on\neach platform; run it with `-lnpt` on Linux, `-p tcp` on macOS, or with `-an`\non Windows for valuable information.\n\nArangoDB can also do a so called *broadcast bind* using `tcp://0.0.0.0:8529`.\nThis way, it is reachable on all interfaces of the host. This may be useful on\ndevelopment systems that frequently change their network setup, like laptops.\n\nArangoDB can also listen to IPv6 link-local addresses via adding the zone ID\nto the IPv6 address in the form `[ipv6-link-local-address%zone-id]`. However,\nwhat you probably want instead is to bind to a local IPv6 address. Local IPv6\naddresses start with `fd`. If you only see a `fe80:` IPv6 address in your\ninterface configuration but no IPv6 address starting with `fd`, your interface\nhas no local IPv6 address assigned. You can read more about IPv6 link-local\naddresses here: https://en.wikipedia.org/wiki/Link-local_address#IPv6.\n\nTo bind to a link-local and local IPv6 address, run `ifconfig` or equivalent\ncommand. The command lists all interfaces and assigned IP addresses. The\nlink-local address may be `fe80::6257:18ff:fe82:3ec6%eth0` (IPv6 address plus\ninterface name). A local IPv6 address may be `fd12:3456::789a`.\nTo bind ArangoDB to it, start `arangod` with\n`--server.endpoint tcp://[fe80::6257:18ff:fe82:3ec6%eth0]:8529`.\nYou can use `telnet` to test the connection.", + "longDescription" : "You can specify this option multiple times to let\nthe ArangoDB server listen for incoming requests on multiple endpoints.\n\nThe endpoints are normally specified either in ArangoDB's configuration file or\non the command-line with `--server.endpoint`. ArangoDB supports different types\nof endpoints:\n\n- `tcp://ipv4-address:port` - TCP/IP endpoint, using IPv4\n- `tcp://[ipv6-address]:port` - TCP/IP endpoint, using IPv6\n- `ssl://ipv4-address:port` - TCP/IP endpoint, using IPv4, SSL encryption\n- `ssl://[ipv6-address]:port` - TCP/IP endpoint, using IPv6, SSL encryption\n- `unix:///path/to/socket` - Unix domain socket endpoint\n\nYou can use `http://` as an alias for `tcp://`, and `https://` as an alias for\n`ssl://`.\n\nIf a TCP/IP endpoint is specified without a port number, then the default port\n(8529) is used.\n\nIf you use SSL-encrypted endpoints, you must also supply the path to a server\ncertificate using the `--ssl.keyfile` option.\n\n```bash\narangod --server.endpoint tcp://127.0.0.1:8529 \\\n --server.endpoint ssl://127.0.0.1:8530 \\\n --ssl.keyfile server.pem /tmp/data-dir\n\n...\n2022-11-07T10:39:30Z [1] INFO [6ea38] {general} using endpoint 'http+ssl://0.0.0.0:8530' for ssl-encrypted requests\n2022-11-07T10:39:30Z [1] INFO [6ea38] {general} using endpoint 'http+tcp://0.0.0.0:8529' for non-encrypted requests\n2022-11-07T10:39:31Z [1] INFO [cf3f4] {general} ArangoDB (version 3.10.0 [linux]) is ready for business. Have fun!\n```\n\nOn one specific ethernet interface, each port can only be bound\n**exactly once**. You can look up your available interfaces using the `ifconfig`\ncommand on Linux / macOS, and `ipconfig` on Windows. The general names of the\ninterfaces differ between operating systems and the hardware they run on.\nHowever, every host has typically a so called loopback interface, which is a\nvirtual interface. By convention, it always has the address `127.0.0.1` (IPv4)\nor `::1` (IPv6), and can only be reached from the very same host. Ethernet\ninterfaces usually have names like `eth0`, `wlan0`, `eth1:17`, `le0`, or a\nplain text name in Windows.\n\nTo find out which services already use ports (so ArangoDB can't bind them\nanymore), you can use the `netstat` command. It behaves a little different on\neach platform; run it with `-lnpt` on Linux, `-p tcp` on macOS, or with `-an`\non Windows for valuable information.\n\nArangoDB can also do a so called *broadcast bind* using `tcp://0.0.0.0:8529`.\nThis way, it is reachable on all interfaces of the host. This may be useful on\ndevelopment systems that frequently change their network setup, like laptops.\n\nArangoDB can also listen to IPv6 link-local addresses via adding the zone ID\nto the IPv6 address in the form `[ipv6-link-local-address%zone-id]`. However,\nwhat you probably want instead is to bind to a local IPv6 address. Local IPv6\naddresses start with `fd`. If you only see a `fe80:` IPv6 address in your\ninterface configuration but no IPv6 address starting with `fd`, your interface\nhas no local IPv6 address assigned. You can read more about IPv6 link-local\naddresses here: https://en.wikipedia.org/wiki/Link-local_address#IPv6.\n\nTo bind to a link-local and local IPv6 address, run `ifconfig` or equivalent\ncommand. The command lists all interfaces and assigned IP addresses. The\nlink-local address may be `fe80::6257:18ff:fe82:3ec6%eth0` (IPv6 address plus\ninterface name). A local IPv6 address may be `fd12:3456::789a`.\nTo bind ArangoDB to it, start `arangod` with\n`--server.endpoint tcp://[fe80::6257:18ff:fe82:3ec6%eth0]:8529`.\nYou can use `telnet` to test the connection.", "obsolete" : false, "os" : [ "linux", @@ -12962,6 +13057,35 @@ "section" : "server", "type" : "double" }, + "server.options-api" : { + "category" : "option", + "component" : [ + "coordinator", + "dbserver", + "agent", + "single" + ], + "default" : "jwt", + "deprecatedIn" : null, + "description" : "The policy for exposing the options API.", + "dynamic" : false, + "enterpriseOnly" : false, + "experimental" : false, + "hidden" : false, + "introducedIn" : [ + "v3.12.0" + ], + "obsolete" : false, + "os" : [ + "linux", + "macos", + "windows" + ], + "requiresValue" : true, + "section" : "server", + "type" : "string", + "values" : "Possible values: \"admin\", \"disabled\", \"jwt\", \"public\"" + }, "server.prio1-size" : { "base" : 1, "category" : "option",