繁体   English   中英

Marklogic中的XDMP-EXTIME的说明

[英]Explanation of XDMP-EXTIME in Marklogic

我需要对为什么在Marklogic中发生XDMP-EXTIME进行清晰的解释。 就我而言,它是在搜索(读取操作)过程中发生的。 在异常消息中,正在打印代码中的一行:

XDMP-EXTIME:wsssearch:options($ request,$ req-config)-超过时间限制

这给我的印象是执行没有超出那条线。 但这似乎是一段非常无害的代码,它不会从数据库中获取任何数据,而只是设置某些搜索选项。 如何确定导致此问题的代码的哪一部分? 我听说增加任务服务器的最大时间限制可以解决此类问题,但这不是我的选择。 请让我知道如何解决这些问题。 对我来说,向您展示代码库非常困难。仍然希望听到你们的帮助。

由于懒惰的评估,该错误消息有时可能使您陷入错误。 实际上,执行可能比错误消息似乎指示的要远。 可能是一行,可能是几条。 查找在何处使用返回值。

剖析有时可以帮助您更清楚地了解大部分时间花在哪里,但是懒惰的评估也可能使事情变得毫无意义。

消息的底线含义很简单:代码执行时间太长。 使用选项的实际搜索是最可能出现错误的候选对象。

如果您在幕后使用cts:search或search:search,那么通常应该会表现良好。 当您最终返回许多结果(例如,不应用分页)时,搜索通常会变慢。 Search:search默认情况下会这样做。

如果您以更新模式运行搜索,搜索速度也会变慢。 您可能最终让MarkLogic尝试应用许多(不必要的)读取锁。 将以下声明放入搜索端点代码或执行搜索的xquery主模块中:

declare option xdmp:update "false";

HTH!

您可以尝试对代码进行性能分析,以了解具体花费了这么长时间。 这可能需要临时增加会话时间限制,以防止在分析时发生超时。 请注意,除非在任务服务器上通过xdmp:spawnxdmp:spawn-fucntion执行此操作,否则您将需要增加托管脚本的App Server上的值。

如果您的代码在模块中,则最简单的操作是使用“配置文件”选项卡调用从Query Console超时的函数。 或者,您可以从prof:enable(xdmp:request())开始该函数,然后将prof:report(xdmp:request())的内容输出到文件系统上的文件,或将其插入数据库中的某个位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM