任务服务器处于负载状态时,减少延迟或优先处理App ServerXDBC / HTTP上的传入请求

问题描述

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

当更新包含大量链接文档的任何实体时,说20k ,则系统将处于负载状态,并且XDBC服务器上的所有请求都会经历延迟。当此计数较小时(范围从0到2k),系统可以正常工作。

注意:一天中不经常更新超过2k或3k的链接文档数。一天发生两次或三次。

问题:

尽管,任务服务器上的约20k触发器在15分钟内就克服了,但是即使在这段时间内最轻的请求(通过XDBC进行通信),用户体验也很差。

是否可以通过任何方式将XDBC服务器设置为为请求提供服务,而Task服务器请求可以承担大多数由于负载导致的延迟。基本上,我们希望为App服务器保留某种负载分区方法(呼吸空间),而与任务服务器队列负载无关。应当为XDBC请求赋予最高优先级。

服务器配置:

  • 128 GB RAM,虚拟处理器16

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

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

解决方法

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...