【发布时间】:2015-01-19 15:14:21
【问题描述】:
我们有一个股票代码工厂,有时有人错误地在 HDB 中运行没有日期的查询,或者在没有时间的 RDB 中运行查询,或者使用其他一些可能会杀死 KDB 的处理逻辑。我们如何在不重启 KDB 实例的情况下找到并终止查询?
【问题讨论】:
我们有一个股票代码工厂,有时有人错误地在 HDB 中运行没有日期的查询,或者在没有时间的 RDB 中运行查询,或者使用其他一些可能会杀死 KDB 的处理逻辑。我们如何在不重启 KDB 实例的情况下找到并终止查询?
【问题讨论】:
您可以在服务中设置客户端查询超时:
参数:'-T'
参考:http://code.kx.com/q4m3/13_Commands_and_System_Variables/#13121-timeout-t
来自 wiki: timeout 参数(注意大写)是一个 int,它指定来自客户端的任何调用在超时和终止之前将执行的秒数。默认值为 0,表示没有超时。该参数对应命令\T。
例如: 开始您的 q 进程:
q -T 40
它将客户端查询超时设置为 40 秒。
【讨论】:
正如@Rahul 所说,您可以使用 T 表示超时。
如果您使用的是 unix 系统,您也可以kill -SIGINT <pid> - 这会杀死当前线程。但在多线程模式下,您可能会得到不同的结果。
【讨论】: