我正在研究最终将是一项计划任务,并且可能是一项运行时间较长的任务。我正在通过在查询控制台中调用xdmp.spawn()
进行测试,并且不得不增加默认的timeLimit
参数。据我了解,xdmp.spawn()
将使用为应用程序服务器设置的默认时间限制,并且您可以为应用程序服务器的最大时间限制参数指定一个不同的timeLimit
。
但是预定任务的时间是多少?我什至不知道它们在什么服务器上运行。似乎没有任何方法可以指定不同的时间限制,那么它将使用默认时间限制还是最大时间限制?
答案 0 :(得分:2)
公认的最佳实践是在服务器外部运行长任务,并向服务器发出请求以迭代该任务的工作(如果可以以某种方式对工作进行分区,则可能是并发请求)。
任务服务器旨在对服务器中的事件做出反应,而不是运行较长的进程。
如果任务取决于服务器状态,则外部进程可以轮询服务器以查看是否需要完成工作。
或者,在任务服务器上执行的任务可以使用xdmp.http *()内置插件通知外部进程它需要运行。
希望有用
答案 1 :(得分:2)
如果未为任务主机指定主机,则在分配的主机或所有主机上执行计划的任务。
https://docs.marklogic.com/guide/admin/scheduling_tasks#chapter
- 在“任务用户”和“任务主机”字段中,指定有权调用任务的用户以及要在其上调用任务的主机。如果未指定主机,则该任务将在所有主机上运行。
默认任务服务器时间限制与任何其他应用程序服务器类似:
600
秒3600
秒您可以通过以下方法在管理界面中验证(并调整):
Configure -> Groups -> Default (or whichever group your server is in) -> Task Server
https://docs.marklogic.com/admin-help/task-server
- 最大时间限制指定任何请求时间限制的上限。任何请求都不能将其时间限制(例如,用
xdmp:set-request-time-limit
设置为高于此数字。时间限制是服务查询请求所允许的最大秒数。 App Server放弃了耗时较长的查询,并返回错误。- 默认时间限制为任何请求的时间限制指定默认值,否则未指定。请求可以使用
xdmp:set-request-time-limit
更改其时间限制。时间限制是为查询请求提供服务的默认秒数。