常见问题 FAQ¶
本文列出了使用 NebulaGraph 3.4.3 时可能遇到的常见问题,用户可以使用文档中心或者浏览器的搜索功能查找相应问题。
如果按照文中的建议无法解决问题,请到 NebulaGraph 论坛 提问或提交 GitHub issue。
关于本手册¶
为什么手册示例和系统行为不一致?¶
NebulaGraph 一直在持续开发,功能或操作的行为可能会有变化,如果发现不一致,请提交 issue 通知 NebulaGraph 团队。
Note
如果发现本文档中的错误:
- 用户可以点击页面顶部右上角的"铅笔"图标进入编辑页面。
- 使用 Markdown 修改文档。完成后点击页面底部的 "Commit changes",这会触发一个 GitHub pull request。
- 完成 CLA 签署,并且至少 2 位 reviewer 审核通过即可合并。
关于历史兼容性¶
X
版本兼容性
NebulaGraph 3.4.3 与 历史版本 (包括 NebulaGraph 1.x 和 2.x) 的数据格式、客户端通信协议均双向不兼容。 使用老版本客户端连接新版本服务端,会导致服务进程退出。 数据格式升级参见升级 NebulaGraph 历史版本至当前版本。 客户端与工具均需要下载对应版本。
关于执行报错¶
如何处理错误信息 SemanticError: Missing yield clause.
¶
从 NebulaGraph 3.0.0 开始,查询语句LOOKUP
、GO
、FETCH
必须用YIELD
子句指定输出结果。详情请参见YIELD。
如何处理错误信息 Host not enough!
¶
从 3.0.0 版本开始,在配置文件中添加的 Storage 节点无法直接读写,配置文件的作用仅仅是将 Storage 节点注册至 Meta 服务中。必须使用ADD HOSTS
命令后,才能正常读写 Storage 节点。详情参见管理 Storage 主机。
如何处理错误信息 To get the property of the vertex in 'v.age', should use the format 'var.tag.prop'
¶
从 3.0.0 版本开始,pattern
支持同时匹配多个 Tag,所以返回属性时,需要额外指定 Tag 名称。即从RETURN 变量名.属性名
改为RETURN 变量名.Tag名.属性名
。
如何处理错误信息 Storage Error E_RPC_FAILURE
¶
报错原因通常为 Graph 服务向 Storage 服务请求了过多的数据,导致 Storage 服务超时。请尝试以下解决方案:
- 修改配置文件:在
nebula-graphd.conf
文件中修改--storage_client_timeout_ms
参数的值,以增加 Storage client 的连接超时时间。该值的单位为毫秒(ms)。例如,设置--storage_client_timeout_ms=60000
。如果nebula-graphd.conf
文件中未配置该参数,请手动增加。提示:请在配置文件开头添加--local_config=true 再重启服务。 - 优化查询语句:减少全库扫描型的查询,无论是否用
LIMIT
限制了返回结果的数量;用 GO 语句改写 MATCH 语句(前者有优化,后者无优化)。 - 检查 Storaged 是否发生过 OOM。(
dmesg |grep nebula
)。 - 为 Storage 服务器提供性能更好的 SSD 或者内存。
- 重试请求。
如何处理错误信息 The leader has changed. Try again later
¶
已知问题,通常需要重试 1-N 次 (N==partition 数量)。原因为 meta client 更新 leader 缓存需要 1-2 个心跳或者通过错误触发强制更新。
如果登录 NebulaGraph 时,出现该报错,可以考虑使用 df -h
查看磁盘空间,检查本地磁盘空间是否已满。
编译 Exchange、Connectors、Algorithm 时无法下载 SNAPSHOT 包¶
现象:编译时提示Could not find artifact com.vesoft:client:jar:xxx-SNAPSHOT
。
原因:本地 maven 没有配置用于下载 SNAPSHOT 的仓库。maven 中默认的 central 仓库用于存放正式发布版本,而不是开发版本(SNAPSHOT)。
解决方案:在 maven 的 setting.xml文件的profiles
作用域内中增加以下配置:
<profile>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<id>snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
如何处理错误信息[ERROR (-1004)]: SyntaxError: syntax error near
?¶
大部分情况下,查询语句需要有YIELD
或RETURN
,请检查查询语句是否包含。
如何处理错误信息can’t solve the start vids from the sentence
¶
查询引擎需要知道从哪些 VID 开始图遍历。这些开始图遍历的 VID,或者通过用户指定,例如:
> GO FROM ${vids} ...
> MATCH (src) WHERE id(src) == ${vids}
# 开始图遍历的 VID 通过如上办法指定
或者通过一个属性索引来得到,例如:
# CREATE TAG INDEX IF NOT EXISTS i_player ON player(name(20));
# REBUILD TAG INDEX i_player;
> LOOKUP ON player WHERE player.name == "abc" | ... YIELD ...
> MATCH (src) WHERE src.name == "abc" ...
# 通过点属性 name 的索引,来得到 VID
否则,就会抛出这样一个异常 can’t solve the start vids from the sentence
。
如何处理错误信息Wrong vertex id type: 1001
¶
检查输入的 VID 类型是否是create space
设置的INT64
或FIXED_STRING(N)
。详情请参见 create space。
如何处理错误信息The VID must be a 64-bit integer or a string fitting space vertex id length limit.
¶
检查输入的 VID 是否超过限制长度。详情请参见 create space。
如何处理错误信息 edge conflict
或 vertex conflict
¶
Storage 服务在毫秒级时间内多次收到插入或者更新同一点或边的请求时,可能返回该错误。请稍后重试。
如何处理错误信息 RPC failure in MetaClient: Connection refused
¶
报错原因通常为 metad 服务状态异常,或是 metad 和 graphd 服务所在机器网络不通。请尝试以下解决方案:
- 在 metad 所在服务器查看下 metad 服务状态,如果服务状态异常,可以重新启动 metad 服务。
- 在报错服务器下使用
telnet meta-ip:port
查看网络状态。
- 检查配置文件中的端口配置,如果端口号与连接时使用的不同,改用配置文件中的端口或者修改配置。
如何处理 nebula-graph.INFO
中错误日志 StorageClientBase.inl:214] Request to "x.x.x.x":9779 failed: N6apache6thrift9transport19TTransportExceptionE: Timed Out
¶
报错原因可能是查询的数据量比较大,storaged 处理超时。请尝试以下解决方法:
- 导入数据时,手动 compaction,加速读的速度。
- 增加 Graph 服务与 Storage 服务的 RPC 连接超时时间,在
nebula-graphd.conf
文件里面修改--storage_client_timeout_ms
参数的值。该值的单位为毫秒(ms),默认值为 60000 毫秒。
如何处理 nebula-storaged.INFO
中错误日志 MetaClient.cpp:65] Heartbeat failed, status:Wrong cluster!
或者 nebula-metad.INFO
含有错误日志HBProcessor.cpp:54] Reject wrong cluster host "x.x.x.x":9771!
¶
报错的原因可能是用户修改了 metad 的 ip 或者端口信息,或者 storage 之前加入过其他集群。请尝试以下解决方法:
用户到 storage 部署的机器所在的安装目录(默认安装目录为 /usr/local/nebula
)下面将cluster.id
文件删除,然后重启 storaged 服务。
如何处理报错信息Storage Error: More than one request trying to add/update/delete one edge/vertex at he same time.
¶
上述报错表示当前版本不允许同时对一个点或者一条边进行并发操作。如出现此报错请重新执行操作命令。
关于设计与功能¶
返回消息中 time spent
的含义是什么?¶
将命令SHOW SPACES
返回的消息作为示例:
nebula> SHOW SPACES;
+--------------------+
| Name |
+--------------------+
| "basketballplayer" |
+--------------------+
Got 1 rows (time spent 1235/1934 us)
- 第一个数字
1235
表示数据库本身执行该命令花费的时间,即查询引擎从客户端接收到一个查询,然后从存储服务器获取数据并执行一系列计算所花费的时间。
- 第二个数字
1934
表示从客户端角度看所花费的时间,即从客户端发送请求、接收结果,然后在屏幕上显示结果所花费的时间。
为什么在正常连接 NebulaGraph 后,nebula-storaged
进程的端口号一直显示红色?¶
nebula-storaged
进程的端口号的红色闪烁状态是因为nebula-storaged
在启动流程中会等待nebula-metad
添加当前 Storage 服务,当前 Storage 服务收到 Ready 信号后才会正式启动服务。从 3.0.0 版本开始,Meta 服务无法直接读写在配置文件中添加的 Storage 服务,配置文件的作用仅仅是将 Storage 服务注册至 Meta 服务中。用户必须使用ADD HOSTS
命令后,才能使 Meta 服务正常读写 Storage 服务。更多信息,参见管理 Storage 主机。
为什么 NebulaGraph 的返回结果每行之间没有横线分隔了?¶
这是 NebulaGraph Console 2.6.0 版本的变动造成的,不是 NebulaGraph 内核的变更,不影响返回数据本身的内容。
关于悬挂边¶
悬挂边 (Dangling edge) 是指一条边的起点或者终点在数据库中不存在。
NebulaGraph 3.4.3 的数据模型中,由于设计允许图中存在“悬挂边”; 没有 openCypher 中的 MERGE 语句。 对于悬挂边的保证完全依赖应用层面。 详见 INSERT VERTEX, DELETE VERTEX, INSERT EDGE, DELETE EDGE。
可以在CREATE SPACE
时设置replica_factor
为偶数(例如设置为 2)吗?¶
不要这样设置。
Storage 服务使用 Raft 协议(多数表决),为保证可用性,要求出故障的副本数量不能达到一半。
当机器数量为 1 时,replica_factor
只能设置为1
。
当机器数量足够时,如果replica_factor=2
,当其中一个副本故障时,就会导致系统无法正常工作;如果replica_factor=4
,只能有一个副本可以出现故障,这和replica_factor=3
是一样。以此类推,所以replica_factor
设置为奇数即可。
建议在生产环境中设置replica_factor=3
,测试环境中设置replica_factor=1
,不要使用偶数。
是否支持停止或者中断慢查询¶
支持。
详情请参见终止查询。
使用GO
和MATCH
执行相同语义的查询,查询结果为什么不同?¶
原因可能有以下几种:
GO
查询到了悬挂边。
RETURN
命令未指定排序方式。
- 触发了 Storage 服务中
max_edge_returned_per_vertex
定义的稠密点截断限制。
-
路径的类型不同,导致查询结果可能会不同。
GO
语句采用的是walk
类型,遍历时点和边可以重复。
MATCH
语句兼容 openCypher,采用的是trail
类型,遍历时只有点可以重复,边不可以重复。
因路径类型不同导致查询结果不同的示例图和说明如下。
从点 A 开始查询距离 5 跳的点,都会查询到点 C(A->B->C->D->E->C
),查询 6 跳的点时,GO
语句会查询到点 D(A->B->C->D->E->C->D
),因为边C->D
可以重复查询,而MATCH
语句查询为空,因为边不可以重复。
所以使用GO
和MATCH
执行相同语义的查询,可能会出现MATCH
语句的查询结果比GO
语句少。
关于路径的详细说明,请参见维基百科。
如何统计每种 Tag 有多少个点,每个 Edge type 有多少条边?¶
请参见 show-stats。
如何获取每种 Tag 的所有点,或者每种 Edge type 的所有边?¶
-
建立并重建索引。
> CREATE TAG INDEX IF NOT EXISTS i_player ON player(); > REBUILD TAG INDEX i_player;
-
使用
LOOKUP
或MATCH
语句。例如:> LOOKUP ON player; > MATCH (n:player) RETURN n;
如何在不指定 Tag/EdgeType 的情况下,获取所有的点和边?¶
nGQL 没有该功能。
你必须先指定 Tag/EdgeType,或者用LIMIT
子句限制返回数量,才能获取对应类型的所有的点和边。
例如执行 MATCH (n) RETURN (n)
. 会返回错误 Scan vertices or edges need to specify a limit number, or limit number can not push down.
。
一个办法是使用 NebulaGraph Algorithm。
或者指定各 Tag/Edge Type,然后再自己通过 Union
拼装。
能不能用中文字符做标识符,比如图空间、Tag、Edge type、属性、索引的名称?¶
能,详情参见关键字和保留字。
获取指定点的出度(或者入度)?¶
一个点的“出度”是指从该点出发的“边”的条数。入度,是指指向该点的边的条数。
nebula > MATCH (s)-[e]->() WHERE id(s) == "given" RETURN count(e); #出度
nebula > MATCH (s)<-[e]-() WHERE id(s) == "given" RETURN count(e); #入度
因为没有对出度和入度的进行特殊处理(例如索引或者缓存),这是一个较慢的操作。特别当遇到超级节点时,可能会发生OOM。
是否有办法快速获取“所有”点的出度和入度?¶
没有直接命令。
可以使用 NebulaGraph Algorithm。
关于运维¶
运行日志文件过大时如何回收日志?¶
NebulaGraph 的运行日志默认在 /usr/local/nebula/logs/
下,正常 INFO 级别日志文件为 nebula-graphd.INFO, nebula-storaged.INFO, nebula-metad.INFO
,报警和错误级别后缀为 .WARNING
和 .ERROR
。
NebulaGraph 使用 glog 打印日志。glog 没有日志回收的功能,用户可以:
- 使用 crontab 设置定期任务回收日志文件,详情请参见 Glog should delete old log files automatically。
- 使用 logrotate 实现日志轮询。使用 logrotate 管理日志前需修改相应 NebulaGraph 服务的配置,将
timestamp_in_logfile_name
参数的值改成false
。
如何查看 NebulaGraph 版本¶
服务运行时:nebula-console
中执行命令 SHOW HOSTS META
,详见 SHOW HOSTS
服务未运行时:在安装路径的bin
目录内,执行./<binary_name> --version
命令,可以查看到 version 和 GitHub 上的 commit ID,例如:
$ ./nebula-graphd --version
-
Docker Compose 部署
查看 Docker Compose 部署的 NebulaGraph 版本,方式和编译安装类似,只是要先进入容器内部,示例命令如下:
docker exec -it nebula-docker-compose_graphd_1 bash cd bin/ ./nebula-graphd --version
-
RPM/DEB 包安装
执行
rpm -qa |grep nebula
即可查看版本。
如何扩缩容(仅限企业版)¶
- 使用 Dashboard(企业版),在可视化页面对 graphd 和 storaged 进行快速扩缩容,详情参见集群操作-扩缩容。
- 使用 NebulaGraph Operator 扩缩容集群,详情参见使用 Kubectl 部署 NebulaGraph 集群和使用 Helm 部署 NebulaGraph 集群。
NebulaGraph 3.4.3 未提供运维命令以实现自动扩缩容,参考以下步骤:
-
metad 的扩容和缩容: metad 不支持自动扩缩容。
Note
用户可以使用脚本工具 迁移 meta 服务,但是需要自行修改 Graph 服务和 Storage 服务的配置文件中的 Meta 设置。
- graphd 的缩容:将该 graphd 的 ip 从 client 的代码中移除,关闭该 graphd 进程。
- graphd 的扩容:在新机器上准备 graphd 二进制文件和配置文件,在配置文件中修改或增加已在运行的 metad 地址,启动 graphd 进程。
- storaged 的缩容:详情参见缩容命令。完成后关闭 storaged 进程。
-
storaged 的扩容:在新机器上准备 storaged 二进制文件和配置文件,在配置文件中修改或增加已在运行的 metad 地址,然后注册 storaged 到 metad 并启动 storaged 进程。详情参见注册 Storage 服务。
storaged 扩缩容之后,还需要运行 Balance Data 和 Balance Leader 命令。
修改 Host 名称后,旧的 Host 一直显示 OFFLINE
怎么办?¶
OFFLINE
状态的 Host 将在一天后自动删除。
如何查看 dmp 文件?¶
dmp 文件是错误报告文件,详细记录了进程退出的信息,可以用操作系统自带的 gdb 工具查看。Coredump 文件默认保存在启动二进制的当前目录下(默认为/usr/local/nebula
目录),在 NebulaGraph 服务 crash 时,系统会自动生成。
- 查看 Core 文件进程名字,pid 一般为数值。
$ file core.<pid>
- 使用 gdb 调试。
$ gdb <process.name> core.<pid>
- 查看文件内容。
例如:
$(gdb) bt
$ file core.1316027
core.1316027: ELF 64-bit LSB core file, x86-64, version 1 (SYSV), SVR4-style, from '/home/workspace/fork/nebula-debug/bin/nebula-metad --flagfile /home/k', real uid: 1008, effective uid: 1008, real gid: 1008, effective gid: 1008, execfn: '/home/workspace/fork/nebula-debug/bin/nebula-metad', platform: 'x86_64'
$ gdb /home/workspace/fork/nebula-debug/bin/nebula-metad core.1316027
$(gdb) bt
#0 0x00007f9de58fecf5 in __memcpy_ssse3_back () from /lib64/libc.so.6
#1 0x0000000000eb2299 in void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char*>(char*, char*, std::forward_iterator_tag) ()
#2 0x0000000000ef71a7 in nebula::meta::cpp2::QueryDesc::QueryDesc(nebula::meta::cpp2::QueryDesc const&) ()
...
如果用户不清楚 dmp 打印出来的相关信息,可以将打印出来的内容,带上操作系统版本、硬件配置、Core文件产生前后的错误日志和可能导致错误的操作贴在 NebulaGraph 论坛上寻求帮助。
如何通过 systemctl 设置开机自动启动 NebulaGraph 服务?¶
-
执行
systemctl enable
启动 metad、graphd 和 storaged 服务。[root]# systemctl enable nebula-metad.service Created symlink from /etc/systemd/system/multi-user.target.wants/nebula-metad.service to /usr/lib/systemd/system/nebula-metad.service. [root]# systemctl enable nebula-graphd.service Created symlink from /etc/systemd/system/multi-user.target.wants/nebula-graphd.service to /usr/lib/systemd/system/nebula-graphd.service. [root]# systemctl enable nebula-storaged.service Created symlink from /etc/systemd/system/multi-user.target.wants/nebula-storaged.service to /usr/lib/systemd/system/nebula-storaged.service.
-
配置 metad、graphd 和 storaged 的 service 文件,设置服务自动拉起。
Caution
在配置service文件时需注意以下几点: - PIDFile、ExecStart、ExecReload、ExecStop 参数的路径需要与服务器上的一致。 - RestartSec 为重启前等待的时长(秒),可根据实际情况修改。 - (可选)StartLimitInterval 为无限次重启,默认是 10 秒内如果重启超过 5 次则不再重启,设置为 0 表示不限次数重启。 - (可选)LimitNOFILE 为服务最大文件打开数,默认为1024,可根据实际情况修改。
配置 metad 服务的 service 文件:
$ vi /usr/lib/systemd/system/nebula-metad.service [Unit] Description=Nebula Graph Metad Service After=network.target [Service ] Type=forking Restart=always RestartSec=15s PIDFile=/usr/local/nebula/pids/nebula-metad.pid ExecStart=/usr/local/nebula/scripts/nebula.service start metad ExecReload=/usr/local/nebula/scripts/nebula.service restart metad ExecStop=/usr/local/nebula/scripts/nebula.service stop metad PrivateTmp=true StartLimitInterval=0 LimitNOFILE=1024 [Install] WantedBy=multi-user.target
配置 graphd 服务的 service 文件:
$ vi /usr/lib/systemd/system/nebula-graphd.service [Unit] Description=Nebula Graph Graphd Service After=network.target [Service] Type=forking Restart=always RestartSec=15s PIDFile=/usr/local/nebula/pids/nebula-graphd.pid ExecStart=/usr/local/nebula/scripts/nebula.service start graphd ExecReload=/usr/local/nebula/scripts/nebula.service restart graphd ExecStop=/usr/local/nebula/scripts/nebula.service stop graphd PrivateTmp=true StartLimitInterval=0 LimitNOFILE=1024 [Install] WantedBy=multi-user.target
配置 storaged 服务的 service 文件:
$ vi /usr/lib/systemd/system/nebula-storaged.service [Unit] Description=Nebula Graph Storaged Service After=network.target [Service] Type=forking Restart=always RestartSec=15s PIDFile=/usr/local/nebula/pids/nebula-storaged.pid ExecStart=/usr/local/nebula/scripts/nebula.service start storaged ExecReload=/usr/local/nebula/scripts/nebula.service restart storaged ExecStop=/usr/local/nebula/scripts/nebula.service stop storaged PrivateTmp=true StartLimitInterval=0 LimitNOFILE=1024 [Install] WantedBy=multi-user.target
-
reload 配置文件。
[root]# sudo systemctl daemon-reload
-
重启服务。
$ systemctl restart nebula-metad.service $ systemctl restart nebula-graphd.service $ systemctl restart nebula-storaged.service
关于连接¶
防火墙中需要开放哪些端口?¶
如果没有修改过配置文件中预设的端口,请在防火墙中开放如下端口:
服务类型 | 端口 |
---|---|
Meta | 9559, 9560, 19559 |
Graph | 9669, 19669 |
Storage | 9777 ~ 9780, 19779 |
如果修改过配置文件中预设的端口,请找出实际使用的端口并在防火墙中开放它们。
周边工具各自使用不同的端口。以下是 NebulaGraph 内核及周边工具使用的默认端口信息:
序号 | 所属产品/服务 | 类型 | 默认端口 | 说明 |
---|---|---|---|---|
1 | NebulaGraph | TCP | 9669 | Graph 服务的 RPC 守护进程监听端口(通常用于客户端连接Graph服务)。 |
2 | NebulaGraph | TCP | 19669 | Graph 服务的 HTTP 端口。 |
3 | NebulaGraph | TCP | 19670 | Graph 服务的 HTTP/2 端口。(3.x 后已弃用该端口) |
4 | NebulaGraph | TCP | 9559 | Meta 服务的 RPC 守护进程监听端口。(通常由 Graph 服务和 Storage 服务发起请求,用于获取和更新图数据库的元数据信息。 |
5 | NebulaGraph | TCP | 9560 | Meta 服务之间的 Raft 通信端口。 |
6 | NebulaGraph | TCP | 19559 | Meta 服务的 HTTP 端口。 |
7 | NebulaGraph | TCP | 19560 | Meta 服务的 HTTP/2 端口。(3.x 后已弃用该端口) |
8 | NebulaGraph | TCP | 9777 | Storage 服务中,Drainer 服务占用端口(仅在企业版集群中暴露)。 |
9 | NebulaGraph | TCP | 9778 | Storage 服务中,Admin 服务占用端口。 |
10 | NebulaGraph | TCP | 9779 | Storage 服务的 RPC 守护进程监听端口。(通常由 Graph 服务发起请求,用于执行数据存储相关的操作,例如读取、写入或删除数据。) |
11 | NebulaGraph | TCP | 9780 | Storage 服务之间的 Raft 通信端口。 |
12 | NebulaGraph | TCP | 19779 | Storage 服务的 HTTP 端口。 |
13 | NebulaGraph | TCP | 19780 | Storage 服务的 HTTP/2 端口。(3.x 后已弃用该端口) |
14 | NebulaGraph | TCP | 8888 | 备份和恢复功能的 Agent 服务端口。Agent 是集群中每台机器的一个守护进程,用于启停 NebulaGraph 服务和上传、下载备份文件。 |
15 | NebulaGraph | TCP | 9789、9790、9788 | 全文索引中 Raft Listener 的端口,从 Storage 服务读取数据,然后将它们写入 Elasticsearch 集群。 也是集群间数据同步中 Storage Listener 的端口。用于同步主集群的 Storage 数据。端口 9790、9788 由端口 9789 加一减一后自动生成。 |
16 | NebulaGraph | TCP | 9200 | NebulaGraph 使用该端口与 Elasticsearch 进行 HTTP 通信,以执行全文搜索查询和管理全文索引。 |
17 | NebulaGraph | TCP | 9569、9570、9568 | 集群间数据同步功能中 Meta Listener 的端口,用于同步主集群的 Meta 数据。端口 9570、9568 由端口 9569 加一减一后自动生成。 |
18 | NebulaGraph | TCP | 9889、9890、9888 | 集群间数据同步功能中 Drainer 服务端口。用于同步 Storage、Meta 数据给从集群。端口 9890、9888 由端口 9889 加一减一后自动生成。 |
19 | NebulaGraph Studio | TCP | 7001 | Studio 提供 Web 服务占用端口。 |
20 | NebulaGraph Dashboard | TCP | 8090 | Nebula HTTP Gateway 依赖服务端口。为集群服务提供 HTTP 接口,执行 nGQL 语句与 NebulaGraph 数据库进行交互。 |
21 | NebulaGraph Dashboard | TCP | 9200 | Nebula Stats Exporter 依赖服务端口。收集集群的性能指标,包括服务 IP 地址、版本和监控指标(例如查询数量、查询延迟、心跳延迟 等)。 |
22 | NebulaGraph Dashboard | TCP | 9100 | Node Exporter 依赖服务端口。收集集群中机器的资源信息,包括 CPU、内存、负载、磁盘和流量。 |
23 | NebulaGraph Dashboard | TCP | 9090 | Prometheus 服务的端口。存储监控数据的时间序列数据库。 |
24 | NebulaGraph Dashboard | TCP | 7003 | Dashboard 社区版 提供 Web 服务占用端口。 |
25 | NebulaGraph Dashboard | TCP | 7005 | Dashboard 企业版 提供 Web 服务占用端口。 |
26 | NebulaGraph Dashboard | TCP | 9093 | Alertmanager 服务的端口。接收 Prometheus 告警,发送告警通知给 Dashboard。 |
27 | NebulaGraph Explorer | TCP | 7002 | Explorer 提供的 Web 服务占用端口。 |
如何测试端口是否已开放?¶
用户可以使用如下 telnet 命令检查端口状态:
telnet <ip> <port>
Note
如果无法使用 telnet 命令,请先检查主机中是否安装并启动了 telnet。
示例:
// 如果端口已开放:
$ telnet 192.168.1.10 9669
Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is '^]'.
// 如果端口未开放:
$ telnet 192.168.1.10 9777
Trying 192.168.1.10...
telnet: connect to address 192.168.1.10: Connection refused
会话数量达到max_sessions_per_ip_per_user
所设值上限时怎么办?¶
当会话数量达到上限时,即超过max_sessions_per_ip_per_user
所设值,在连接 NebulaGraph 的时候,会出现以下报错:
Fail to create a new session from connection pool, fail to authenticate, error: Create Session failed: Too many sessions created from 127.0.0.1 by user root. the threshold is 2. You can change it by modifying 'max_sessions_per_ip_per_user' in nebula-graphd.conf
用户可以通过以下三种方式解决问题:
- 执行
KILL SESSION
命令,关闭不需要的 Session。详情参见终止会话。 - 在 Graph 服务的配置文件
nebula_graphd.conf
中增大max_sessions_per_ip_per_user
的值,增加可以创建的会话总数。重启 Graph 服务使配置生效。 - 在 Graph 服务的配置文件
nebula_graphd.conf
中减小session_idle_timeout_secs
参数的值,降低空闲会话的超时时间。重启 Graph 服务使配置生效。