show proc '/current_queries';连接id为0的查询如何终止

为了更快的定位您的问题,请提供以下信息,谢谢
【详述】show proc ‘/current_queries’;僵尸会话如何杀掉呢

【业务影响】
【是否存算分离】否
【StarRocks版本】3.2.8->3.2.16
【集群规模】3fe(3 follower)+12be(fe与be混合部署)
【机器信息】65C/750G/万兆
【联系方式】 StarRocks社区群5 -思变 [1412195108@qq.com]
【附件】

在 StarRocks 中,SHOW PROC '/current_queries'; 命令会显示当前正在执行的查询和活跃的会话。如果您看到了所谓的“僵尸会话”,通常是客户端已经断开连接,但 StarRocks FE 仍然保留了会话信息。

要杀掉这些僵尸会话,您可以使用 KILL 命令。

步骤如下:

  1. 查找僵尸会话的 ConnectionId:
    首先,执行 SHOW PROC '/current_queries'; 命令,并仔细查看输出。找到那些您认为是“僵尸”的会话。这些会话通常:

    • HostUser 信息可能看起来不正常。
    • Time(持续时间)可能非常长,远超正常查询的执行时间。
    • Info(查询语句)可能为空或显示不完整的语句。
    • 最重要的是,获取这些会话对应的 ConnectionId 列的值。

    例如,输出可能像这样:

    +--------------+---------+------+-----------------+-----------+-------------------------------------+-----------+----------+
    | ConnectionId | User    | Host | Catalog         | Db        | Info                                | QueryId   | Time     |
    +--------------+---------+------+-----------------+-----------+-------------------------------------+-----------+----------+
    | 12345        | user1   | %    | default_catalog | test_db   | SELECT * FROM my_table;             | query_abc | 10       |
    | 12346        | starrocksmgr | 10.1.1.1:12345 | default_catalog | NULL | NULL                                | NULL      | 3600     |  <-- 这可能是一个僵尸会话
    +--------------+---------+------+-----------------+-----------+-------------------------------------+-----------+----------+
    

    在上面的例子中,ConnectionId12346 的会话可能是一个僵尸会话,因为它持续时间很长,且 InfoNULL

  2. 使用 KILL 命令杀掉会话:
    一旦您确定了要杀掉的僵尸会话的 ConnectionId,使用以下命令:

    KILL CONNECTION <ConnectionId>;
    

    <ConnectionId> 替换为您在第一步中找到的实际 ID。

    例如,要杀掉 ConnectionId 为 12346 的会话:

    KILL CONNECTION 12346;
    

注意事项:

  • 权限: 您需要具有 OPERATORADMIN 权限才能杀掉其他用户的会话。普通用户只能杀掉自己的会话。
  • 谨慎操作: 在执行 KILL 命令之前,请务必确认您正在杀掉的是确实不再需要的僵尸会话,以免中断正在进行的合法查询。
  • 如果 KILL 无效: 极少数情况下,如果 FE 内部状态非常异常,KILL 命令可能无法立即生效。如果僵尸会话在执行 KILL 后仍然存在一段时间,并且没有新的活动,这可能表明 FE 存在更深层次的问题。在这种情况下,您可以:
    • 检查 FE 的日志(fe.log),看看是否有与这些会话相关的错误或警告信息。
    • 如果问题持续且严重影响集群稳定性,作为最后手段,可能需要考虑重启受影响的 FE 节点(从 Follower 开始,逐个重启,确保集群可用性)。但这种情况非常罕见,且应在专业支持下进行。

通常情况下,KILL CONNECTION <ConnectionId>; 是解决僵尸会话问题的标准且有效的方法。

老板你有点答非所问了 :joy: