跳转至

终止会话(KILL SESSION)

KILL SESSION语句用于关闭未登出的会话(Session)。

Note

  • 只有root用户可以终止会话。
  • 执行KILL SESSION命令后,所有的 Graph 服务同步最新的会话信息需要等待2* session_reclaim_interval_secs秒,默认等待120秒。

语法

KILL SESSION语句支持终止单个和多个会话,语法如下:

  • 终止单个会话

    KILL {SESSION|SESSIONS} <SessionId>
    
    • {SESSION|SESSIONS}:支持SESSIONSESSIONS的写法。
    • <SessionId>:指会话 Session 的 ID。可执行 SHOW SESSIONS 命令查看会话 ID。
  • 终止多个会话

    SHOW SESSIONS 
    | YIELD $-.SessionId AS sid [WHERE <filter_clause>]
    | KILL {SESSION|SESSIONS} $-.sid
    

    Note

    KILL SESSION语句支持管道操作,即将SHOW SESSIONS语句与KILL SESSION语句结合使用,以终止多个会话。

    • [WHERE <filter_clause>]
      • 可选项,使用WHERE子句过滤会话;<filter_expression>指滤过表达式,例如WHERE $-.CreateTime < datetime("2022-12-14T18:00:00")。如果不加该选项,则关闭所有当前会话。
      • WHERE子句中支持的过滤项有:SessionIdUserNameSpaceNameCreateTimeUpdateTimeGraphAddrTimezoneClientIp。可以执行 SHOW SESSIONS 命令查看这些过滤项的含义。
    • {SESSION|SESSIONS}:支持SESSIONSESSIONS的写法。

    Caution

    请谨慎使用过滤条件以防误删会话。

示例

  • 终止单个会话。

    nebula> KILL SESSION 1672887983842984 
    
  • 终止多个会话。

    • 终止创建时间小于2023-01-05T18:00:00的所有会话。
      nebula> SHOW SESSIONS | YIELD $-.SessionId AS sid WHERE $-.CreateTime < datetime("2023-01-05T18:00:00") | KILL SESSIONS $-.sid
      
    • 终止创建时间最早的两个会话。
      nebula> SHOW SESSIONS | YIELD $-.SessionId AS sid, $-.CreateTime as CreateTime | ORDER BY $-.CreateTime ASC | LIMIT 2 | KILL SESSIONS $-.sid
      
    • 终止用户名为session_user1创建的所有会话。
      nebula> SHOW SESSIONS | YIELD $-.SessionId as sid WHERE $-.UserName == "session_user1" | KILL SESSIONS $-.sid
      
    • 终止所有会话

      nebula> SHOW SESSIONS | YIELD $-.SessionId as sid | KILL SESSION $-.sid
      
      // 或者
      nebula> SHOW SESSIONS | KILL SESSIONS $-.SessionId
      

      Caution

      终止所有会话时,当前会话也会被终止。请谨慎使用。


最后更新: 2024年12月19日