diff --git a/docs-2.0/20.appendix/0.FAQ.md b/docs-2.0/20.appendix/0.FAQ.md index be6b8acaf4..9da119c306 100644 --- a/docs-2.0/20.appendix/0.FAQ.md +++ b/docs-2.0/20.appendix/0.FAQ.md @@ -32,17 +32,21 @@ Nebula Graph 一直在持续开发,功能或操作的行为可能会有变化 Neubla Graph {{ nebula.release }} 与 Nebula Graph {{ nebula.base20 }} 的数据格式兼容,客户端不兼容。 --> -## 关于执行 +## 关于执行报错 -### 为什么 Nebula Graph 2.6.0 的返回结果每行之间没有横线分隔了? +### 如何处理错误信息 `SemanticError: Missing yield clause.` -这是 Nebula Console 2.6.0 版本的变动造成的,不是 Nebula Graph 内核的变更,不影响返回数据本身的内容。 +从 Nebula Graph 3.0.0 开始,查询语句`LOOKUP`、`GO`、`FETCH`必须用`YIELD`子句指定输出结果。详情请参见[YIELD](../3.ngql-guide/8.clauses-and-options/yield.md)。 -### 关于悬挂边 + + +### 如何处理错误信息 `To get the property of the vertex in 'v.age', should use the format 'var.tag.prop'` -Nebula Graph {{ nebula.release }} 的数据模型中,由于设计允许图中存在“悬挂边”;没有 openCypher 中的 MERGE 语句。对于悬挂边的保证完全依赖应用层面。详见 [INSERT VERTEX](../3.ngql-guide/12.vertex-statements/1.insert-vertex.md), [DELETE VERTEX](../3.ngql-guide/12.vertex-statements/4.delete-vertex.md), [INSERT EDGE](../3.ngql-guide/13.edge-statements/1.insert-edge.md), [DELETE EDGE](../3.ngql-guide/13.edge-statements/4.delete-edge.md)。 +从 3.0.0 版本开始,`pattern`支持同时匹配多个 Tag,所以返回属性时,需要额外指定 Tag 名称。即从`RETURN 变量名.属性名`改为`RETURN 变量名.Tag名.属性名`。 ### 如何处理错误信息 `[ERROR (-1005)]: Used memory hits the high watermark(0.800000) of total system memory.` @@ -53,10 +57,6 @@ Nebula Graph {{ nebula.release }} 的数据模型中,由于设计允许图中 * 清理系统内存,使其降低到阈值以下。 * [修改 Graph 配置](../5.configurations-and-logs/1.configurations/1.configurations.md)。在所有 Graph 服务器的配置文件中增加`system_memory_high_watermark_ratio`参数,为其设置一个大于`0.8`的值,例如`0.9`。 - !!! note - - 仅 Graph 服务支持`system_memory_high_watermark_ratio`,Storage 和 Meta 服务不支持该参数。 - ### 如何处理错误信息 `Storage Error E_RPC_FAILURE` 报错原因通常为 Graph 服务向 Storage 服务请求了过多的数据,导致 Storage 服务超时。请尝试以下解决方案: @@ -71,20 +71,108 @@ Nebula Graph {{ nebula.release }} 的数据模型中,由于设计允许图中 已知问题,通常需要重试 1-N 次 (N==partition 数量)。原因为 meta client 更新 leader 缓存需要 1-2 个心跳或者通过错误触发强制更新。 -### 如何处理错误信息 `SemanticError: Missing yield clause.` +### [ERROR (-1005)]: Schema not exist: xxx -从 Nebula Graph 3.0.0 开始,查询语句`LOOKUP`、`GO`、`FETCH`必须用`YIELD`子句指定输出结果。详情请参见[YIELD](../3.ngql-guide/8.clauses-and-options/yield.md)。 +查询时提示`Schema not exist`,请确认: - +- Tag 或 Edge type 的名称是否为关键字,如果是关键字,请使用反引号(\`)将它们括起来。详情请参见[关键字](../3.ngql-guide/1.nGQL-overview/keywords-and-reserved-words.md)。 +### 编译 Exchange、Connectors、Algorithm 时无法下载 SNAPSHOT 包 -### 如何处理错误信息 `To get the property of the vertex in 'v.age', should use the format 'var.tag.prop'` +现象:编译时提示`Could not find artifact com.vesoft:client:jar:xxx-SNAPSHOT`。 + +原因:本地 maven 没有配置用于下载 SNAPSHOT 的仓库。maven 中默认的 central 仓库用于存放正式发布版本,而不是开发版本(SNAPSHOT)。 + +解决方案:在 maven 的 setting.xml文件的`profiles`作用域内中增加以下配置: + +``` + + + true + + + + snapshots + https://oss.sonatype.org/content/repositories/snapshots/ + + true + + + + +``` + +### 如何处理错误信息`[ERROR (-7)]: SyntaxError: syntax error near`? + +大部分情况下,查询语句需要有`YIELD`或`RETURN`,请检查查询语句是否包含。 + + + +### 如何处理错误信息`can’t solve the start vids from the sentence` + +查询引擎需要知道从哪些 VID 开始图遍历。这些开始图遍历的 VID,或者通过用户指定,例如: + +```ngql +> GO FROM ${vids} ... +> MATCH (src) WHERE id(src) == ${vids} +# 开始图遍历的 VID 通过如上办法指定 +``` + +或者通过一个属性索引来得到,例如: + +```ngql +# 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](../3.ngql-guide/9.space-statements/1.create-space.md)。 + +### 如何处理错误信息`The VID must be a 64-bit integer or a string fitting space vertex id length limit.` + +检查输入的 VID 是否超过限制长度。详情请参见 [create space](../3.ngql-guide/9.space-statements/1.create-space.md)。 + +### 如何处理错误信息 `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](../8.service-tuning/compaction.md),加速读的速度。 + +- 增加 Graph 服务与 Storage 服务的 RPC 连接超时时间,在`nebula-storaged.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 服务。 -从 3.0.0 版本开始,`pattern`支持同时匹配多个 Tag,所以返回属性时,需要额外指定 Tag 名称。即从`RETURN 变量名.属性名`改为`RETURN 变量名.Tag名.属性名`。 + +## 关于设计与功能 ### 返回消息中 `time spent` 的含义是什么? @@ -104,6 +192,19 @@ Got 1 rows (time spent 1235/1934 us) - 第二个数字`1934`表示从客户端角度看所花费的时间,即从客户端发送请求、接收结果,然后在屏幕上显示结果所花费的时间。 +### 为什么 Nebula Graph 的返回结果每行之间没有横线分隔了? + +这是 Nebula Console 2.6.0 版本的变动造成的,不是 Nebula Graph 内核的变更,不影响返回数据本身的内容。 + +### 关于悬挂边 + +悬挂边 (Dangling edge) 是指一条边的起点或者终点在数据库中不存在。 + +Nebula Graph {{ nebula.release }} 的数据模型中,由于设计允许图中存在“悬挂边”; +没有 openCypher 中的 MERGE 语句。 +对于悬挂边的保证完全依赖应用层面。 +详见 [INSERT VERTEX](../3.ngql-guide/12.vertex-statements/1.insert-vertex.md), [DELETE VERTEX](../3.ngql-guide/12.vertex-statements/4.delete-vertex.md), [INSERT EDGE](../3.ngql-guide/13.edge-statements/1.insert-edge.md), [DELETE EDGE](../3.ngql-guide/13.edge-statements/4.delete-edge.md)。 + ### 可以在`CREATE SPACE`时设置`replica_factor`为偶数(例如设置为 2)吗? 不要这样设置。 @@ -148,10 +249,6 @@ Storage 服务使用 Raft 协议(多数表决),为保证可用性,要求 关于路径的详细说明,请参见[维基百科](https://en.wikipedia.org/wiki/Path_(graph_theory)#Walk,_trail,_path)。 -### 如何处理错误信息`[ERROR (-7)]: SyntaxError: syntax error near`? - -大部分情况下,查询语句需要有`YIELD`或`RETURN`,请检查查询语句是否包含。 - ### 如何统计每种 Tag 有多少个点,每个 Edge type 有多少条边? 请参见 [show-stats](../3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md)。 @@ -186,67 +283,6 @@ nGQL 没有该功能。 或者指定各 Tag/Edge Type,然后再自己通过 `Union` 拼装。 -### 如何处理错误信息`can’t solve the start vids from the sentence` - -查询引擎需要知道从哪些 VID 开始图遍历。这些开始图遍历的 VID,或者通过用户指定,例如: - -```ngql -> GO FROM ${vids} ... -> MATCH (src) WHERE id(src) == ${vids} -# 开始图遍历的 VID 通过如上办法指定 -``` - -或者通过一个属性索引来得到,例如: - -```ngql -# 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](../3.ngql-guide/9.space-statements/1.create-space.md)。 - -### 如何处理错误信息`The VID must be a 64-bit integer or a string fitting space vertex id length limit.` - -检查输入的 VID 是否超过限制长度。详情请参见 [create space](../3.ngql-guide/9.space-statements/1.create-space.md)。 - -### 如何处理错误信息 `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](../8.service-tuning/compaction.md),加速读的速度。 - -- 增加 Graph 服务与 Storage 服务的 RPC 连接超时时间,在`nebula-storaged.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 服务。 - ### 能不能用中文字符做标识符,比如图空间、Tag、Edge type、属性、索引的名称? 能,详情参见[关键字和保留字](../3.ngql-guide/1.nGQL-overview/keywords-and-reserved-words.md)。 @@ -266,49 +302,18 @@ nebula > MATCH (s)<-[e]-() WHERE id(s) == "given" RETURN count(e); #入度 可以使用 [Nebula Algorithm](../nebula-algorithm.md)。 -### [ERROR (-1005)]: Schema not exist: xxx - -查询时提示`Schema not exist`,请确认: - -- Schema 中是否存在该 Tag 或 Edge type。 - -- Tag 或 Edge type 的名称是否为关键字,如果是关键字,请使用反引号(\`)将它们括起来。详情请参见[关键字](../3.ngql-guide/1.nGQL-overview/keywords-and-reserved-words.md)。 - -### 编译 Exchange、Connectors、Algorithm 时无法下载 SNAPSHOT 包 - -现象:编译时提示`Could not find artifact com.vesoft:client:jar:xxx-SNAPSHOT`。 - -原因:本地 maven 没有配置用于下载 SNAPSHOT 的仓库。maven 中默认的 central 仓库用于存放正式发布版本,而不是开发版本(SNAPSHOT)。 - -解决方案:在 maven 的 setting.xml文件的`profiles`作用域内中增加以下配置: - -``` - - - true - - - - snapshots - https://oss.sonatype.org/content/repositories/snapshots/ - - true - - - - -``` - ## 关于运维 ### 日志文件过大时如何回收日志? + ### 如何查看 Nebula Graph 版本 @@ -318,7 +323,6 @@ Nebula Graph 使用 [glog](https://github.com/google/glog) 打印日志。glog ```bash $ ./nebula-graphd --version -nebula-graphd version 2.5.0, Git: c397299c, Build Time: Aug 19 2021 11:20:18 ``` - Docker Compose 部署 @@ -337,11 +341,11 @@ nebula-graphd version 2.5.0, Git: c397299c, Build Time: Aug 19 2021 11:20:18 ### 如何扩缩容 -用户可以使用 Dashboard(企业版),在可视化页面对 graphd 和 storaged 进行快速扩缩容,详情参见[集群操作-扩缩容](../nebula-dashboard-ent/4.cluster-operator/4.manage.md)。 +用户可以使用 Dashboard(企业版),在可视化页面对 graphd 进行快速扩缩容,详情参见[集群操作-扩缩容](../nebula-dashboard-ent/4.cluster-operator/4.manage.md)。 Nebula Graph {{ nebula.release }} 未提供运维命令以实现自动扩缩容,参考以下步骤: -- metad 的扩容和缩容: metad 不支持扩缩容,也不支持迁移到新机器,也不要增加新的 metad 进程。 +- metad 的扩容和缩容: metad 不支持自动扩缩容。 !!! note @@ -351,12 +355,15 @@ Nebula Graph {{ nebula.release }} 未提供运维命令以实现自动扩缩容 - graphd 的扩容: 在新机器上准备 graphd 二进制文件和配置文件,在配置文件中修改或增加已在运行的 metad 地址,启动 graphd 进程。 +- storaged 不支持扩缩容。 + + ### 修改 Host 名称后,旧的 Host 一直显示 `OFFLINE` 怎么办?