【问题标题】:XDMP-DEADLOCK at Info message levelInfo 消息级别的 XDMP-DEADLOCK
【发布时间】:2020-06-16 23:51:51
【问题描述】:

关于 XDMP-DEADLOCK (https://docs.marklogic.com/8.0/messages/XDMP-en/XDMP-DEADLOCK) 的 MarkLogic 官方文档在 DebugNotice 消息级别进行了讨论,但是我不能无法在 Info 消息级别找到有关 XDMP-DEADLOCK 的任何信息。

有人可以解释一下 XDMP-DEADLOCK 消息在 Info 消息级别是什么意思吗?

例如:

2020-03-02 22:00:00.763 信息:XDMP-DEADLOCK:检测到死锁锁定安全http://marklogic.com/xdmp/users/123456789101112131415

MarkLogic 版本:8.0-9.1 操作系统:RedHat Linux 7

【问题讨论】:

    标签: marklogic marklogic-8


    【解决方案1】:

    DebugNotice 级别的 XDMP-DEADLOCK 消息在评估查询的 e-node 上报告。 Info 级消息在 d 节点上报告。

    如果您将服务器作为混合 E/D 运行,而不是专用 evaluator and data nodes,那么您可能会看到在同一服务器上记录的这些消息的不同日志级别。

    这篇知识库文章更详细地解释了 MarkLogic XDMP-DEADLOCK 消息:

    https://help.marklogic.com/Knowledgebase/Article/View/17/0/understanding-xdmp-deadlock

    MarkLogic Server 旨在自动检测和解决死锁。当检测到死锁时,重试其中一个死锁事务,允许另一个获取锁并继续。当这种预期行为发生时,XDMP-DEADLOCK 将作为“Debug”消息写入 e-node 错误日志,以指示发生了死锁并已解决。

    如果无法通过重复重试解决死锁,则会将 XDMP-DEADLOCK 消息作为“Notice”消息写入 e-node 错误日志。

    死锁也会在发生死锁的 d 节点上的“Info”级别报告。

    死锁消息可能是性能问题的根源。您应该研究如何调整应用程序代码库以尽可能避免它们。特别是如果您经常看到它们和/或它们冒泡到 Notice 级别。

    【讨论】:

    • 感谢您的回复。所以,如果我理解正确的话,信息级别的死锁消息意味着发生了死锁,但 MarkLogic Server 并没有自动解决它。我说的对吗?
    • 如果它无法解决,我相信日志中应该有某种相应的错误消息用于失败的事务(除非您使用 try/catch 和吞咽错误包装了调用)。当 d 节点发生死锁时,您将看到报告的信息,但并不表示失败或缺少重试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多