运行时配置¶
ArcticDB 提供了各种可在运行时调整的选项。本页详细介绍了最常修改的选项以及如何配置它们。
配置方法¶
本页详细介绍的所有整数选项都可以通过以下两种方法进行配置。本页列出的所有选项均为整数选项,但日志级别除外,日志级别将在单独的部分中说明。
在代码中¶
对于整数选项,以下代码片段演示了如何在代码中设置值
from arcticdb.config import set_config_int
set_config_int(setting, value)
其中 setting
是包含设置名称的字符串(例如 VersionMap.ReloadInterval
),而 value
是用于设置选项的整数。
环境变量¶
对于整数选项,可以使用环境变量进行如下设置
ARCTICDB_<setting>_int=<value>
例如 ARCTICDB_VersionMap_ReloadInterval_int=0
。请注意,通过环境变量设置时,设置名称中的 .
字符会被替换为下划线。
优先级¶
如果同时设置了环境变量并调用了 set_config_int
,则后者优先。
响应性¶
配置选项在创建 Library
实例时读取一次,此后不再监测,因此所有选项都应在构造 Library
对象之前配置好。
配置选项¶
VersionMap.ReloadInterval¶
ArcticDB 库实例维护一个短时缓存,其中包含它认为是遇到的每个 symbol 的最新版本。默认情况下,此缓存会在 5 秒后失效。
由于此缓存的存在,理论上两个独立的库实例可能在短时间内对 symbol 的最新版本存在分歧。
此缓存旨在减轻存储负载——如果这不是问题,可以通过将此选项设置为 0
来安全地禁用它。
除此之外,ArcticDB 没有客户端缓存。
SymbolList.MaxDelta¶
当 symbol 列表缓存中磁盘上的对象数量超过 SymbolList.MaxDelta
时,symbol 列表缓存会被压缩。
默认值为 500。
S3Storage.DeleteBatchSize¶
S3 API 支持 DeleteObjects
方法,通过该方法,单个 HTTP 请求可用于删除多个对象。此参数可用于控制每次请求删除的对象数量。
默认值为 1000。
S3Storage.VerifySSL¶
控制客户端是否应验证存储的 SSL 证书。如果设置,这将覆盖在创建库时设置的库选项。
值: * 0:不执行 SSL 验证。 * 1:执行 SSL 验证。
S3Storage.UseWinINet¶
此设置仅在 Windows 操作系统上有效。
控制客户端是使用 WinINet HTTP 后端还是默认的 WinHTTP 后端。
WinINet 可以在 AWS SDK 调试日志中提供更好的错误消息,例如用于诊断 SSL 问题。有关如何设置 AWS SDK 调试日志的说明,请参阅下面的日志配置部分。
当前的 AWS SDK 不允许通过 INet 后端禁用 SSL 验证。
值: * 0:使用 WinHTTP * 1:使用 WinINet
VersionStore.NumCPUThreads 和 VersionStore.NumIOThreads¶
ArcticDB 使用两个线程池来管理计算资源
- CPU - 用于 CPU 密集型任务,例如解压缩或过滤数据
- IO - 用于从底层存储读取/写入数据
默认情况下,ArcticDB 会根据主机上可用的核心数*尝试推断这些线程池的合理大小。CPU 线程池大小默认为主机上的核心数,而 IO 线程池大小默认为 CPU 线程池大小的 1.5 倍。如果这些默认值不适用于特定用例,则可以直接设置这些线程池大小。
如果只设置了 NumCPUThreads
,则 NumIOThreads
仍将默认为 NumCPUThreads
的 1.5 倍。
*在 Linux 机器上,核心数会考虑 cgroups。特别是,这意味着在 Kubernetes 中运行的进程会遵守 CPU 限制。
日志配置¶
ArcticDB 有多个日志流,每个日志流的详细程度可以独立配置。可用的日志流可以在源代码中看到,尽管最常用的日志流位于
version
- 包含有关正在读取、创建或销毁的版本的信息,以及版本层链表的遍历信息storage
- 包含有关与存储设备交互的各个操作的信息(读取对象、写入对象、删除对象等)
可用的日志级别按详细程度降序排列为 TRACE
、DEBUG
、INFO
、WARN
、ERROR
、CRITICAL
、OFF
。默认情况下,所有日志流都设置为 INFO
级别。
有两种方法可以配置日志级别
- 设置环境变量:
ARCTICDB_<流名>_loglevel=<级别>
,例如:ARCTICDB_version_loglevel=DEBUG
。所有日志流可以通过ARCTICDB_all_loglevel
一起配置。 -
在代码中:调用
arcticdb.config
模块中的set_log_level
。这接受两个可选参数 -
default_level
- 所有日志流的默认级别。应为字符串,例如"DEBUG"
specific_log_levels
- 一个字典,键为日志流名称,值为日志级别,用于覆盖默认设置,例如{"version": "DEBUG""}
。
如果同时设置了环境变量并调用了 set_log_level
,则后者优先。
还可以通过设置环境变量 ARCTICDB_AWS_LogLevel_int=6
来启用 S3 日志记录,这会将所有 S3 日志输出到当前工作目录中的一个文件。有关更多详细信息,请参阅 AWS 文档。
日志目的地¶
默认情况下,ArcticDB 的所有日志输出到 stderr
。这可以使用 set_log_level
方法进行配置。
配置仅输出日志到文件
from arcticdb.config import set_log_level
set_log_level(console_output=False, file_output_path="/tmp/arcticdb.log")
配置日志输出到 stderr
和文件
from arcticdb.config import set_log_level
set_log_level(console_output=True, file_output_path="/tmp/arcticdb.log")
配置日志仅输出到 stderr
(这是默认配置)
from arcticdb.config import set_log_level
set_log_level(console_output=True, file_output_path=None)