如何解决任务服务器处于负载状态时,减少延迟或优先处理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线程管理任务服务器队列和线程池。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。