跳转至

Graph 服务配置

Graph 服务提供了两份初始配置文件nebula-graphd.conf.defaultnebula-graphd.conf.production,方便在不同场景中使用。文件的默认路径为/usr/local/nebula/etc/

Caution

  • 不建议修改local_config的值为false。修改后 NebulaGraph 服务启动后会先尝试从 Meta 服务获取缓存的配置信息,可能导致集群配置不一致,造成未知风险。
  • 不建议修改文档未介绍的配置项,除非已经熟悉源代码并完全了解配置项的作用。

配置文件使用方式

如需使用初始配置文件,从上述两个文件选择其一,删除后缀.default.production,Graph 服务才能将其识别为配置文件并从中获取配置信息。

配置文件参数值说明

配置文件内没有设置某个参数表示参数使用的是默认值。文件内只预设了部分参数的值,而且两份初始配置文件内的参数值也略有不同,本文的预设值以nebula-graphd.conf.default为准。

Caution

配置文件中的部分参数值可以在运行时动态修改。本文将这些参数标记为支持运行时动态修改,并当local_config值设置为true时重启服务后配置会恢复为初始配置。详情参见修改配置

如需查看所有的参数及其当前值,参见配置管理

basics 配置

名称 预设值 说明 是否支持运行时动态修改
daemonize true 是否启动守护进程。 不支持
pid_file pids/nebula-graphd.pid 记录进程 ID 的文件。 不支持
enable_optimizer true 是否启用优化器。 不支持
timezone_name - 指定 NebulaGraph 的时区。初始配置文件中未设置该参数,使用需手动添加。系统默认值为UTC+00:00:00。格式请参见 Specifying the Time Zone with TZ。例如,东八区的设置方式为--timezone_name=UTC+08:00 不支持
default_charset utf8 创建图空间时的默认字符集。 不支持
default_collate utf8_bin 创建图空间时的默认排序规则。 不支持
local_config true 是否从配置文件获取配置信息。 不支持

Note

  • 在插入时间类型 的属性值时,NebulaGraph 会根据timezone_name设置的时区将该时间值(TIMESTAMP 类型例外)转换成相应的 UTC 时间,因此在查询中返回的时间类型属性值为 UTC 时间。
  • timezone_name参数只用于转换 NebulaGraph 中存储的数据,NebulaGraph 进程中其它时区相关数据,例如日志打印的时间等,仍然使用主机系统默认的时区。

logging 配置

名称 预设值 说明 是否支持运行时动态修改
log_dir logs 存放 Graph 服务日志的目录,建议和数据保存在不同硬盘。 不支持
minloglevel 0 最小日志级别,即记录此级别或更高级别的日志。可选值为0(INFO)、1(WARNING)、2(ERROR)、3(FATAL)。建议在调试时设置为0,生产环境中设置为1。如果设置为4,NebulaGraph 不会记录任何日志。 支持
v 0 VLOG 日志详细级别,即记录小于或等于此级别的所有 VLOG 消息。可选值为012345。glog 提供的 VLOG 宏允许用户定义自己的数字日志记录级别,并用参数v控制记录哪些详细消息。详情参见 Verbose Logging 支持
logbufsecs 0 缓冲日志的最大时间,超时后输出到日志文件。0表示实时输出。单位:秒。 不支持
redirect_stdout true 是否将标准输出和标准错误重定向到单独的输出文件。 不支持
stdout_log_file graphd-stdout.log 标准输出日志文件名称。 不支持
stderr_log_file graphd-stderr.log 标准错误日志文件名称。 不支持
stderrthreshold 3 要复制到标准错误中的最小日志级别(minloglevel)。 不支持
timestamp_in_logfile_name true 日志文件名称中是否包含时间戳。true表示包含,false表示不包含。 不支持

query 配置

名称 预设值 说明 是否支持运行时动态修改
accept_partial_success false 是否将部分成功视为错误。此配置仅适用于只读请求,写请求总是将部分成功视为错误。查询部分成功时,会提示Got partial result 支持
session_reclaim_interval_secs 60 将 Session 信息发送给 Meta 服务的间隔。单位:秒。 支持
max_allowed_query_size 4194304 最大查询语句长度。单位:字节。默认为4194304,即 4MB。 支持

networking 配置

名称 预设值 说明 是否支持运行时动态修改
meta_server_addrs 127.0.0.1:9559 全部 Meta 服务的 IP(或主机名)和端口。多个 Meta 服务用英文逗号(,)分隔。 不支持
local_ip 127.0.0.1 Graph 服务的本地 IP(或主机名)。本地 IP 用于识别 nebula-graphd 进程,如果是分布式集群或需要远程访问,请修改为对应地址。 不支持
listen_netdev any 监听的网络设备。 不支持
port 9669 Graph 服务的 RPC 守护进程监听端口。 不支持
reuse_port false 是否启用 SO_REUSEPORT。 不支持
listen_backlog 1024 socket 监听的连接队列最大长度,调整本参数需要同时调整net.core.somaxconn 不支持
client_idle_timeout_secs 28800 空闲连接的超时时间。取值范围为 1~604800,单位:秒。默认 8 小时。 不支持
session_idle_timeout_secs 28800 空闲会话的超时时间。取值范围为 1~604800。默认 8 小时。单位:秒。 不支持
num_accept_threads 1 接受传入连接的线程数。 不支持
num_netio_threads 0 网络 IO 线程数。0表示 CPU 核数。 不支持
num_max_connections 0 所有网络线程的最大活动连接数,0表示没有限制。
每个网络线程的最大连接数=num_max_connections/num_netio_threads
不支持
num_worker_threads 0 执行用户查询的线程数。0表示 CPU 核数。 不支持
ws_ip 0.0.0.0 HTTP 服务的 IP 地址。 不支持
ws_http_port 19669 HTTP 服务的端口。 不支持
heartbeat_interval_secs 10 默认心跳间隔。请确保所有服务的heartbeat_interval_secs取值相同,否则会导致系统无法正常工作。单位:秒。 支持
storage_client_timeout_ms - Graph 服务与 Storage 服务的 RPC 连接超时时间。初始配置文件中未设置该参数,使用需手动添加。默认值为60000毫秒。 不支持
slow_query_threshold_us 200000 定义超过多长时间的查询为慢查询。单位:微秒。
注意:DML 语句的执行时间即使超过该值,也不会被记录为慢查询。
不支持
ws_meta_http_port 19559 HTTP 协议监听 Meta 服务的端口,需要和 Meta 服务配置文件中的ws_http_port保持一致。 不支持

Caution

使用 IP 时建议使用真实的 IP。否则某些情况下127.0.0.1/0.0.0.0无法正确解析。

authorization 配置

名称 预设值 说明 是否支持运行时动态修改
enable_authorize false 用户登录时是否进行身份验证。身份验证详情请参见身份验证 不支持
auth_type password 用户登录的身份验证方式。取值为passwordldapcloud 不支持

memory 配置

名称 预设值 说明 是否支持运行时动态修改
system_memory_high_watermark_ratio 0.8 内存高水位报警机制的触发阈值。系统内存占用率高于该值会触发报警机制,NebulaGraph 会停止接受查询。 支持

metrics 配置

名称 预设值 说明 是否支持运行时动态修改
enable_space_level_metrics false 开启后可打开图空间级别的监控,对应的监控指标名称中包含图空间的名称,例如query_latency_us{space=basketballplayer}.avg.3600。支持的监控指标可用curl命令查看,详细说明参见查询监控指标 不支持

session 配置

名称 预设值 说明 是否支持运行时动态修改
max_sessions_per_ip_per_user 300 相同用户和 IP 地址可以创建的最大活跃会话数。 不支持

experimental 配置

名称 预设值 说明 是否支持运行时动态修改
enable_experimental_feature false 实验性功能开关。可选值为truefalse 不支持
enable_data_balance true 是否开启均衡分片功能。仅当enable_experimental_featuretrue时生效。 不支持

memory tracker 配置

Note

Memory Tracker 是一个内存管理工具,用于监控和限制内存使用。对于大型查询,Memory Tracker 可以防止 OOM 问题。如果在容器环境中使用 Memory Tracker,需要在 Graph 服务的配置文件中添加相关配置。操作如下:

  1. 创建目录/sys/fs/cgroup/graphd/,添加并配置memory.max
  2. etc/nebula-graphd.conf添加以下配置。

    --containerized=true
    --cgroup_v2_controllers=/sys/fs/cgroup/graphd/cgroup.controllers
    --cgroup_v2_memory_stat_path=/sys/fs/cgroup/graphd/memory.stat
    --cgroup_v2_memory_max_path=/sys/fs/cgroup/graphd/memory.max
    --cgroup_v2_memory_current_path=/sys/fs/cgroup/graphd/memory.current
    

详细信息,请参见容器/cgroup 模式

名称 预设值 说明 是否支持运行时动态修改
memory_tracker_limit_ratio 0.8 取值可设置为:(0, 1]23
警惕:设置该参数时请确保system_memory_high_watermark_ratio的值不为1,否则该参数的值不生效。
(0, 1]:可用内存的百分比。计算公式:可用内存的百分比 = 可用内存 / (总内存 - 保留内存)。
当正在进行的查询导致内存使用超过配置的内存限制时,该查询会失败,并在失败后释放内存。
注意:对于云上和本地节点混合部署的集群,需要根据实际情况调小该参数。例如,当预期 Graphd 只占用 50% 的内存时,该参数的值可设置为小于0.5
2:动态自适应模式(Dynamic Self Adaptive),Memory Tracker 会根据系统当前的可用内存,动态调整可用内存。
注意:此功能为实验性功能,由于动态自适应不能做到实时监控操作系统内存使用情况,在一些大内存分配的场景,还是会存在 OOM 可能。
3:关掉 Memory Tracker,Memory Tracker 将只记录内存使用情况,即使超过限额,也不会干预执行。
支持
memory_tracker_untracked_reserved_memory_mb 50 保留内存的大小,单位:MB。 支持
memory_tracker_detail_log false 是否定期生成较详细的内存跟踪日志。当值为true时,会定期生成内存跟踪日志。 支持
memory_tracker_detail_log_interval_ms 60000 内存跟踪日志的生成时间间隔,单位:毫秒。仅当memory_tracker_detail_logtrue时,该参数生效。 支持
memory_purge_enabled true 是否定期开启内存清理功能。当值为true时,会定期清理内存。 支持
memory_purge_interval_seconds 10 内存清理的时间间隔,单位:秒。memory_purge_enabledtrue时,该参数生效。 支持

performance optimization 配置

名称 预设值 说明 是否支持运行时动态修改
max_job_size 1 最大作业并发数,即查询执行时在可以并发执行的阶段所采用的最大线程数。建议为物理 CPU 核数的一半。 支持
min_batch_size 8192 处理数据集的最小批处理大小。仅在max_job_size大于 1 时生效。 支持
optimize_appendvertices false 启用后,执行MATCH语句时不过滤悬挂边。 支持
path_batch_size 10000 每个线程构建的路径数。 支持

最后更新: May 9, 2024