【问题标题】:How to set maximum execution time for KDB query?如何设置 KDB 查询的最大执行时间?
【发布时间】:2014-04-11 10:58:17
【问题描述】:

尤其是在查询远程 KDB 实例时,查询中的拼写错误会导致它花费数小时而不是数秒,这很痛苦——因为服务器是远程的,我什至无法访问它来杀死 KDB 实例。

所以我想知道是否有某种方法可以指定最大执行时间?

编辑:

我正在寻找一种方法来根据每个查询从客户端执行此操作。有些查询可能需要数小时,但其他查询不应超过 10 秒。服务器端的硬限制无济于事。

【问题讨论】:

  • 如果您的 KDB 实例挂起,您可以只获取该进程的 PID 并使用 UNIX 发送信号来中断该进程吗? >ps -aef | grep <process patern>>kill -SIGINT <PID>

标签: kdb


【解决方案1】:
\T 5

或用

启动kdb
q -T 5

将对用户查询设置最长 5 秒的超时时间。

您可以发送 SIGINT http://en.wikipedia.org/wiki/Unix_signal,其效果与按下 control-C 相同,这将尝试停止正在处理的命令。并非所有 q 代码都支持中断。

这样做的一种方法是拥有两个 q 进程,其中一个仅用于发送 linux kill 中断信号。

【讨论】:

  • 谢谢,但是有什么方法可以从客户端根据每个查询执行此操作吗?有些查询可能需要数小时,但其他查询不应超过 10 秒。服务器端的硬性限制无济于事。
  • 响应您的“drop the connection to cancel a query”的说法,在断开连接后我无法重新连接,大概是因为服务器还在忙于上一个查询。
【解决方案2】:

尝试通过自己的进程转发查询:

  \T 3
  h:hopen `::3000
  0(h;({system "sleep 2";x+1};5))
6
  0(h;({system "sleep 4";x+1};5))
'stop

【讨论】:

    猜你喜欢
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    相关资源
    最近更新 更多