在我的Lotus Notes工作流应用程序中,我有一个计划的服务器代理(每五分钟一次)。当用户对文档执行操作时,还会触发服务器端代理(此代理会修改所述文档,服务器端)。在制作过程中,我们收到很多关于处理不完整或有时根本没有处理的投诉。我检查了服务器配置,发现只有4个代理可以同时运行。作为一个拥有超过50,000个用户的全球应用程序,我唯一可以归咎于这些问题的是代理运行量,但我不确定我是否正确(我是开发人员并且缺乏对这些东西的了解) 。有人可以帮助我找到我的推理是否正确(在同时代理上)并帮助我理解我如何解决这个问题?你能告诉我参考资料吗?提前谢谢!
答案 0 :(得分:3)
要记住的重要事项。
因此,如果您的数据库A包含代理X(5分钟)和Y(10分钟)。它将首先运行X.一旦X完成,接下来将安排下一个(X或Y)。如果它们位于同一个数据库中,它将永远不会让您同时运行X + Y.
这是用于停止数据库代理中可能出现的死锁的行为。
此外,您还有一个计划队列,该计划队列可以对可以计划的代理数量进行限制。例如,如果您每5分钟有一个代理X,但需要10分钟才能完成,您的计划队列将慢慢填满,然后用完空间。
那么如何解决这个问题呢?有几种方法。
选项1:在服务器上使用程序文档。
将代理设置为已安排的“从不”,并让程序文档使用该命令执行代理。
tell amgr run "dir/database.nsf" 'agentName'
<强> PRO:强>
CON:
选项2:创建一个调用Web代理的代理。
<强> PRO:强>
CON:
选项3:从预定触发器更改为另一个触发器。
例如“当新邮件到达时”。总的来说,这是三者中更好的选择。
...
最后我会说,如果可以的话,你应该很少使用“每5分钟执行一次”,除非它是不会被不同数据库中的多个用户执行的关键代理。