跳转至

作业管理

在 Storage 服务上长期运行的任务称为作业,例如COMPACTFLUSHSTATS。 如果图空间的数据量很大,这些作业可能耗时很长。作业管理可以帮助执行、查看、停止和恢复作业。

Note

所有作业管理命令都需要先选择图空间后才能执行。

SUBMIT JOB COMPACT

SUBMIT JOB COMPACT 语句会在当前图空间内触发 RocksDB 的长耗时 compact 操作。

compact配置详情请参见 Storage 服务配置

示例:

nebula> SUBMIT JOB COMPACT;
+------------+
| New Job Id |
+------------+
| 40         |
+------------+

SUBMIT JOB FLUSH

SUBMIT JOB FLUSH语句将当前图空间内存中的 RocksDB memfile 写入硬盘。

示例:

nebula> SUBMIT JOB FLUSH;
+------------+
| New Job Id |
+------------+
| 96         |
+------------+

SUBMIT JOB STATS

SUBMIT JOB STATS语句会在当前图空间内启动一个作业,该作业对当前图空间进行统计。作业完成后,用户可以使用SHOW STATS语句列出统计结果。详情请参见 SHOW STATS

Note

如果存储在 Nebula Graph 中的数据有变化,为了获取最新的统计结果,请重新执行SUBMIT JOB STATS

示例:

nebula> SUBMIT JOB STATS;
+------------+
| New Job Id |
+------------+
| 34         |
+------------+

SHOW JOB

Meta 服务将SUBMIT JOB请求解析为多个任务,然后分配给进程 nebula-storaged。SHOW JOB <job_id>语句显示当前图空间内指定作业和相关任务的信息。

job_id在执行SUBMIT JOB语句时会返回。

示例:

nebula> SHOW JOB 34;
+----------------+-----------------+------------+----------------------------+----------------------------+
| Job Id(TaskId) | Command(Dest)   | Status     | Start Time                 | Stop Time                  |
+----------------+-----------------+------------+----------------------------+----------------------------+
| 34             | "STATS"         | "FINISHED" | 2021-11-01T03:32:27.000000 | 2021-11-01T03:32:27.000000 |
| 0              | "192.168.8.111" | "FINISHED" | 2021-11-01T03:32:27.000000 | 2021-11-01T03:32:41.000000 |
+----------------+-----------------+------------+----------------------------+----------------------------+
参数 说明
Job Id(TaskId) 第一行显示作业 ID,其他行显示作业相关的任务 ID。
Command(Dest) 第一行显示执行的作业命令名称,其他行显示任务对应的 nebula-storaged 进程。
Status 显示作业或任务的状态。详情请参见作业状态
Start Time 显示作业或任务开始执行的时间。
Stop Time 显示作业或任务结束执行的时间,结束后的状态包括FINISHEDFAILEDSTOPPED

作业状态

作业状态的说明如下。

状态 说明
QUEUE 作业或任务在等待队列中。此阶段Start Time为空。
RUNNING 作业或任务在执行中。Start Time为该阶段的起始时间。
FINISHED 作业或任务成功完成。Stop Time为该阶段的起始时间。
FAILED 作业或任务失败。Stop Time为该阶段的起始时间。
STOPPED 作业或任务停止。Stop Time为该阶段的起始时间。
REMOVED 作业或任务被删除。

状态转换的说明如下。

Queue -- running -- finished -- removed
     \          \                /
      \          \ -- failed -- /
       \          \            /
        \ ---------- stopped -/

SHOW JOBS

SHOW JOBS语句列出当前图空间内所有未过期的作业。

作业的默认过期时间为一周。如果需要修改过期时间,请修改 Meta 服务的参数job_expired_secs。详情请参见 Meta 服务配置

示例:

nebula> SHOW JOBS;
+--------+---------------------+------------+----------------------------+----------------------------+
| Job Id | Command             | Status     | Start Time                 | Stop Time                  |
+--------+---------------------+------------+----------------------------+----------------------------+
| 34     | "STATS"             | "FINISHED" | 2021-11-01T03:32:27.000000 | 2021-11-01T03:32:27.000000 |
| 33     | "FLUSH"             | "FINISHED" | 2021-11-01T03:32:15.000000 | 2021-11-01T03:32:15.000000 |
| 32     | "COMPACT"           | "FINISHED" | 2021-11-01T03:32:06.000000 | 2021-11-01T03:32:06.000000 |
| 31     | "REBUILD_TAG_INDEX" | "FINISHED" | 2021-10-29T05:39:16.000000 | 2021-10-29T05:39:17.000000 |
| 10     | "COMPACT"           | "FINISHED" | 2021-10-26T02:27:05.000000 | 2021-10-26T02:27:05.000000 |
+--------+---------------------+------------+----------------------------+----------------------------+

STOP JOB

STOP JOB <job_id>语句可以停止当前图空间内未完成的作业。

示例:

nebula> STOP JOB 22;
+---------------+
| Result        |
+---------------+
| "Job stopped" |
+---------------+

RECOVER JOB

RECOVER JOB [<job_id>]语句可以重新执行当前图空间内状态为QUEUEFAILEDSTOPPED的作业,未指定<job_id>时,会从最早的作业开始尝试重新执行,并返回已恢复的作业数量。

示例:

nebula> RECOVER JOB;
+-------------------+
| Recovered job num |
+-------------------+
| 5 job recovered   |
+-------------------+

FAQ

如何排查作业问题?

SUBMIT JOB操作使用的是 HTTP 端口,请检查 Storage 服务机器上的 HTTP 端口是否正常工作。用户可以执行如下命令调试:

curl "http://{storaged-ip}:19779/admin?space={space_name}&op=compact"

最后更新: March 7, 2023