【问题标题】:Reducing latency or prioritizing incoming requests on App Servers (XDBC/HTTP) when Task server is under load当任务服务器负载不足时,减少延迟或优先处理应用服务器 (XDBC/HTTP) 上的传入请求
【发布时间】:2020-08-27 07:07:11
【问题描述】:

我们的项目正在使用线程数为 32 的 MarkLogic XDBC 服务器。任务服务器线程数也是 32。更新少数实体(来自 UI)在任务服务器上触发 CPF 触发器 (T1)另一个集合中数据库中的一些链接文档。由于业务规则,链接文档计数不受限制。一些实体链接到 0 个文档,而其他实体可以链接到 100k 或更多。

当任何具有大量链接文档的实体被更新时,假设是 20k,然后系统负载不足并且任何来自 XDBC 服务器的请求都会遇到延迟。当此计数较小时,系统工作正常,范围从 0 到 2k。

注意: 超过 2k 或 3k 的链接文档数量在一天内更新不是很频繁。它一天发生两次或三次。

问题:

虽然任务服务器上的约 20k 触发器在 15 分钟内完成,但在此期间即使对于最轻的请求(通过 XDBC 通信),用户界面的用户体验也很糟糕。

有什么方法可以设置 XDBC 服务器尽快为请求提供服务,并且任务服务器请求可以承担由于负载引起的大部分延迟。基本上,我们希望为应用服务器保留某种负载分区方法(呼吸空间),而不考虑任务服务器队列负载。应优先考虑 XDBC 请求。

服务器配置:

  • 128 GB RAM,16 个虚拟处理器

  • 1 TB 数据库大小分布在 8 个森林中。

  • 任务服务器队列大小 - 1000k

【问题讨论】:

    标签: marklogic marklogic-9


    【解决方案1】:

    使用 xdbc eval,您可以将更新生成到任务服务器队列中,卸载 xdbc 线程以进行交互式低延迟使用。 然后,您可以独立于 xdbc 线程管理任务服务器队列和线程池。

    【讨论】:

    • 其实所有的更新都已经在Task Server上了。线程负载在任务服务器上,XDBC 几乎没有 4、5 个轻请求.. 主要是 get 调用(在正常情况下通常在不到几毫秒的时间内得到服务)。由于任务服务器上的负载,MarkLogic 服务器 XDBC 服务器也响应缓慢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 2015-04-11
    • 2021-02-03
    • 1970-01-01
    • 2011-06-05
    • 2015-09-30
    相关资源
    最近更新 更多