在我的Lotus Notes工作流应用程序中,我有一个预定的服务器代理(每隔5分钟)。当用户对文档进行操作时,服务器端代理也被触发(该代理对所述文档进行修改,即服务器端)。在生产过程中,我们收到许多投诉,称加工不完整,有时根本没有加工。我检查了服务器配置,发现只有4个代理可以并发运行。作为一个拥有超过50,000个用户的全球应用程序,我唯一能归咎于这些问题的是代理运行的数量,但我不确定我是否正确(我是一个开发人员,缺乏关于这些东西的知识)。有人能帮我找出我的推理是否正确(在同时存在的代理上),并帮助我理解如何解决这个问题吗?你能给我提供推荐信吗?提前谢谢你!
发布于 2013-01-17 23:22:35
重要的是要记住。
在任何给定时间,服务器上的计划代理将仅运行同一数据库中的一个代理!
因此,如果您有数据库A和代理X (5分钟)和Y (10分钟)。它将首先运行X。一旦X完成,下一个被调度的(X或Y)将接着运行。如果它们在同一个数据库中,它永远不会让你同时运行X+Y。
这是用来阻止数据库代理中可能出现的死锁的行为。
此外,您还有一个调度队列,该队列对可以调度的座席数量有限制。例如,如果代理X每隔5分钟完成一次,但需要10分钟才能完成,则排定队列将慢慢填满,然后耗尽空间。
那么如何解决这个问题呢?有几种方法。
选项1:使用服务器上的程序文档。
将代理设置为scheduled "Never“,并让程序文档使用命令执行代理。
tell amgr run "dir/database.nsf" 'agentName' PRO:
缺点:
选项2:创建一个调用web代理的代理。
PRO:
schedule.
缺点:
你需要在服务器上运行
选项3:从预定触发器更改为另一个触发器。
例如“当新邮件到达时”。总体而言,这是三个选项中更好的一个。
..。
最后,我想说的是,如果可以的话,您应该很少使用“每5分钟执行一次”,除非它是一个关键代理,不会被跨不同数据库的多个用户执行。
https://stackoverflow.com/questions/14381518
复制相似问题