我开发了一个Notes代理,它根据特定条件交叉匹配数据库中的文档。我们有一个开发服务器,一个列车服务器和一个实时服务器,每个服务器都运行相关应用程序的实例。当我们手动运行代理时,代理完全按照我们在所有三个实例上的要求执行操作。在计划开发和训练服务器上的特定时间时,代理程序也可以正常运行。但是,当我们在Live服务器上安排代理时,它不会运行,并且日志只会声明以下内容;
"代理经理:代理' MatchingAlert | MatchingAlert'超出了执行时间限制在数据库' PBT \ PBTLive.nsf'。代理签名者'应用程序开发/ IT / ***************'"
所有三台服务器似乎设置完全相同。此外,我已将文档从Live转移到Development实例,它仍然按照计划在Development实例上运行,因此它不能处理Live实例中的更多文档。那会是什么导致这个?
编辑:刚刚发生的事情值得一提。我们希望Train实例与Live实例具有完全相同的文档,因此我实际上删除了Train实例并使用Live实例作为模板制作了它的新副本,现在预定的代理程序未运行并显示相同的输出到将日志作为Live实例,因此它必须与Live实例而不是Live服务器有关,但它会是什么?
答案 0 :(得分:1)
根据日志条目,代理运行但需要很长时间才能完成任务。
也许
确保代理的签名者拥有执行代理所需的所有权利。
答案 1 :(得分:1)
日志条目非常清楚地说明了错误:代理运行的时间比允许运行的时间长。 最佳做法是向代理添加一些日志记录。
首先,我会检查代理在测试环境中运行多长时间(成功运行后右键单击代理并检查日志)。
如果该时间足够快以在时间限制内完成(例如,12分钟运行并且服务器配置为允许最多15分钟),则可能足以在负载较重的服务器上运行代理以超过时间限制。
此外:通常,最大代理运行时有两种不同的设置,“白天参数”和“夜间参数”。 如果一个代理在夜间运行,它通常比白天允许运行时更多。
根据您使用的代码,可能有几个原因导致代理在一个数据库实例上运行的时间比在另一个实例上运行的时间长得多(即使在同一服务器上)。
e.g:
这一切都在猜测而不知道你的代码。问题的原因很可能取决于您的代码。
再次建议:在代码中构建一些“日志记录”:让它“告诉”你,它在哪里,以及它已经做了什么。让它输出运行时间...... 然后你会看到,你的生产环境会浪费时间。