首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >并发Lotus notes服务器端代理

并发Lotus notes服务器端代理
EN

Stack Overflow用户
提问于 2013-01-17 22:41:53
回答 1查看 3.1K关注 0票数 1

在我的Lotus Notes工作流应用程序中,我有一个预定的服务器代理(每隔5分钟)。当用户对文档进行操作时,服务器端代理也被触发(该代理对所述文档进行修改,即服务器端)。在生产过程中,我们收到许多投诉,称加工不完整,有时根本没有加工。我检查了服务器配置,发现只有4个代理可以并发运行。作为一个拥有超过50,000个用户的全球应用程序,我唯一能归咎于这些问题的是代理运行的数量,但我不确定我是否正确(我是一个开发人员,缺乏关于这些东西的知识)。有人能帮我找出我的推理是否正确(在同时存在的代理上),并帮助我理解如何解决这个问题吗?你能给我提供推荐信吗?提前谢谢你!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-17 23:22:35

重要的是要记住。

在任何给定时间,服务器上的计划代理将仅运行同一数据库中的一个代理!

因此,如果您有数据库A和代理X (5分钟)和Y (10分钟)。它将首先运行X。一旦X完成,下一个被调度的(X或Y)将接着运行。如果它们在同一个数据库中,它永远不会让你同时运行X+Y。

这是用来阻止数据库代理中可能出现的死锁的行为。

此外,您还有一个调度队列,该队列对可以调度的座席数量有限制。例如,如果代理X每隔5分钟完成一次,但需要10分钟才能完成,则排定队列将慢慢填满,然后耗尽空间。

那么如何解决这个问题呢?有几种方法。

选项1:使用服务器上的程序文档。

将代理设置为scheduled "Never“,并让程序文档使用命令执行代理。

代码语言:javascript
运行
复制
tell amgr run "dir/database.nsf" 'agentName' 

PRO:

  1. 您将能够在小于5分钟的计划内运行代理。
  2. 您可以在同一数据库中运行多个代理。

缺点:

  1. 您必须知道代理正在与什么交互,并编写代码以处理其他代理或同时运行的代理本身。
  2. 这样做可能会产生严重的性能影响。您需要了解服务器中正在发生的事情以及它将如何影响服务器。
  3. 如果你有很多数据库,你的程序文档列表就会变得杂乱无章,而且很难维护。如果
  4. 代理超过了服务器上允许的代理执行时间,则不会终止通过"Tell AMGR“实现的代理。它们必须是手动的,killed.
  5. There是确定哪些代理正在运行/运行的简单方法。

选项2:创建一个调用web代理的代理。

PRO:

schedule.

  • You可以在同一个database.

  • You中运行多个代理
  1. 您将能够在不到5分钟的时间内运行代理程序对通过另一个代理程序运行的内容有更好的控制。

缺点:

你需要在服务器上运行

  1. 这样做会影响性能,而且您还需要知道,如果运行多个实例,它将如何与系统交互,或者,如果它们超过服务器上允许的代理执行时间,其他agents.
  2. Agents将不会终止。
  3. 您需要允许服务器上的并发web代理/web服务,或者您可能会挂起服务器。

选项3:从预定触发器更改为另一个触发器。

例如“当新邮件到达时”。总体而言,这是三个选项中更好的一个。

..。

最后,我想说的是,如果可以的话,您应该很少使用“每5分钟执行一次”,除非它是一个关键代理,不会被跨不同数据库的多个用户执行。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14381518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档