Как убить запросы KDB в RDB или HDB?

У нас есть тикер, и иногда кто-то по ошибке запускает запросы в HDB без даты или в RDB без времени или с какой-либо другой логикой обработки, которая может убить KDB. Как мы можем найти и уничтожить запрос без перезапуска экземпляра KDB?


person user3914448    schedule 19.01.2015    source источник


Ответы (2)


Вы можете установить тайм-аут клиентского запроса в своем сервисе:

параметр: '-T'

ссылка: http://code.kx.com/q4m3/13_Commands_and_System_Variables/#13121-timeout-t

Из вики: Параметр тайм-аута (обратите внимание на верхний регистр) - это целое число, которое указывает количество секунд, в течение которых любой вызов от клиента будет выполняться, прежде чем он истечет и завершится. Значение по умолчанию - 0, что означает отсутствие тайм-аута. Этот параметр соответствует команде \ T.

Пример: начните процесс q как:

       q -T 40

он установит тайм-аут клиентского запроса на 40 секунд.

person Rahul    schedule 19.01.2015

Как говорит @Rahul, вы можете использовать T для тайм-аута.

Если вы используете систему unix, вы также можете kill -SIGINT <pid> - что убивает текущий поток. Однако в многопоточном режиме результаты могут быть неоднозначными.

person Manish Patel    schedule 19.01.2015
comment
Получает ли запрос kdb отдельный поток для выполнения? На kdb это не повлияет? - person user3914448; 20.01.2015
comment
Если это текущий запущенный поток и это однопоточный экземпляр KDB, он просто убьет этот поток, а не процесс. Я делал это много раз, работает очень хорошо :) - person Manish Patel; 20.01.2015