【nebula查询】show queries,show local queries查询不到慢ngql语句

提问参考模版:

  • nebula 版本:3.6.0
  • 部署方式:分布式
  • 安装方式: RPM
  • 是否上生产环境:Y
  • 硬件信息
    • 500G SSD
    • 16C64G
  • 问题的具体描述
  • 生产环境点边在1亿左右,查询4度的ngql语句执行时间在15s左右, 通过nebula-stodiu执行show queries,无法展示当前正在执行的慢ngql语句, show local queries也不会显示慢ngql语句。在本地环境测试,如果当前session执行了慢ngql语句, 使用这个session执行show local queries会被阻塞,然后抛出socket closed异常, 如果使用其他创建的session执行show queries,则查询结果为空,也就是说无论如何都无法查询当前nebula正在执行的慢ngql语句。
  • 计算无法做到,通过kill session能否解决这个问题呢, kill session会停止到服务端正在执行的ngql语句吗, 因为超时的ngql语句执行对客户端已经没有意义了。
  • SHOW QUERIES从 Meta 服务获取所有 Session 中的查询信息。这些信息会根据参数session_reclaim_interval_secs定义的周期同步到 Meta 服务,因此在客户端获取到的信息可能属于上个同步周期。

show queries 的查询会有一定的时延

show local queries 是要当前 session 的。
@xigongdaEricyang studio 用的session pool的 client吗?如果是的话,show local queries 是有可能显示不出来的

是的,用当前session执行会一直阻塞, 因为当前session执行了一个慢ngql语句,无法返回结果。再使用当前session去执行show local queries时会阻塞,然后抛出一个socket closed异常

这个我调整过,设置为1s,仍然不会显示正在执行的ngql语句, 通过kill session的方式,能否结束慢查询呢

你可以 kill query,不过如果算子已经在运行的话,是无法删除的

现在的问题是无法通过show queries,和show local queries查找到当前执行ngql语句的planId, 也就无法kill query, 算子正在运行,无法删除是指什么意思, 是指当前ngql语句如果在执行中,无法被kill掉吗

已经启动在跑的算子,是停不掉的。直到下一个算子启动前

在我多次执行show queries时, 终于有一次返回了对应的ngql语句,但是在kill时报错了,是什么原因呢?
show queries: [{“Status”:“RUNNING”,“User”:“root”,“Query”:“go 4 steps from "1724312379055tfTwK4miUSdYaLaf332" over * BIDIRECT yield DISTINCT src(edge) as vert | YIELD count($-.vert) as count_result”,“StartTime”:{“day”:30,“decodeType”:“utf-8”,“hour”:3,“localDateTime”:{“day”:30,“hour”:3,“microsec”:460924,“minute”:6,“month”:8,“sec”:42,“setDay”:true,“setHour”:true,“setMicrosec”:true,“setMinute”:true,“setMonth”:true,“setSec”:true,“setYear”:true,“year”:2024},“localDateTimeStr”:“2024-08-30T03:06:42.460924”,“microsec”:460924,“minute”:6,“month”:8,“second”:42,“timezoneOffset”:0,“uTCDateTimeStr”:“2024-08-30T03:06:42.460924”,“year”:2024},“Host”:“"127.0.0.1":9669”,“DurationInUSec”:3274087,“ExecutionPlanID”:156,“SessionID”:1724986909002575},{“Status”:“RUNNING”,“User”:“root”,“Query”:“go 4 steps from "1724312379055tfTwK4miUSdYaLaf332" over * BIDIRECT yield DISTINCT src(edge) as vert | YIELD count($-.vert) as count_result”,“StartTime”:{“day”:30,“decodeType”:“utf-8”,“hour”:3,“localDateTime”:{“day”:30,“hour”:3,“microsec”:389893,“minute”:6,“month”:8,“sec”:35,“setDay”:true,“setHour”:true,“setMicrosec”:true,“setMinute”:true,“setMonth”:true,“setSec”:true,“setYear”:true,“year”:2024},“localDateTimeStr”:“2024-08-30T03:06:35.389893”,“microsec”:389893,“minute”:6,“month”:8,“second”:35,“timezoneOffset”:0,“uTCDateTimeStr”:“2024-08-30T03:06:35.389893”,“year”:2024},“Host”:“"127.0.0.1":9669”,“DurationInUSec”:10345147,“ExecutionPlanID”:152,“SessionID”:1724986908970965}]
用一个新的session执行kill语句:KILL QUERY (session=1724986909002575, plan=156)
报错信息:|com.vesoft.nebula.client.graph.SessionPool-177| - execute error, code: -1005, message: ExecutionPlanId[156] does not exist in current Session.

可能是在 kill query 的时候,query 已经结束了。

看起来SHOW QUERIES, 是否返回慢NGQL语句跟这个配置无关:session_reclaim_interval_secs, 执行多次SHOW QUERIES,偶发性才返回正在执行的慢NGQL语句,大部分都是返回空, 还可能与哪个配置有关系呢

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。