【问题标题】:How to kill KDB queries in RDB or HDB?如何杀死 RDB 或 HDB 中的 KDB 查询?
【发布时间】:2015-01-19 15:14:21
【问题描述】:

我们有一个股票代码工厂,有时有人错误地在 HDB 中运行没有日期的查询,或者在没有时间的 RDB 中运行查询,或者使用其他一些可能会杀死 KDB 的处理逻辑。我们如何在不重启 KDB 实例的情况下找到并终止查询?

【问题讨论】:

    标签: kdb q-lang


    【解决方案1】:

    您可以在服务中设置客户端查询超时:

    参数:'-T'

    参考:http://code.kx.com/q4m3/13_Commands_and_System_Variables/#13121-timeout-t

    来自 wiki: timeout 参数(注意大写)是一个 int,它指定来自客户端的任何调用在超时和终止之前将执行的秒数。默认值为 0,表示没有超时。该参数对应命令\T。

    例如: 开始您的 q 进程:

           q -T 40
    

    它将客户端查询超时设置为 40 秒。

    【讨论】:

      【解决方案2】:

      正如@Rahul 所说,您可以使用 T 表示超时。

      如果您使用的是 unix 系统,您也可以kill -SIGINT <pid> - 这会杀死当前线程。但在多线程模式下,您可能会得到不同的结果。

      【讨论】:

      • kdb 查询是否有单独的线程来执行?不会影响kdb吗?
      • 如果它是当前正在运行的线程并且它是单线程 KDB 实例,那么它只会杀死那个线程,而不是进程。我已经做过很多次了,很享受:)
      猜你喜欢
      • 2015-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-03
      • 1970-01-01
      • 1970-01-01
      • 2019-12-14
      • 1970-01-01
      相关资源
      最近更新 更多