为什么不会预定 Notes Agent 运行
Why won't scheduled Notes Agent run
我开发了一个 Notes 代理程序,它可以根据特定条件交叉匹配数据库中的文档。我们有一个开发服务器、一个训练服务器和一个实时服务器,每个服务器都 运行 一个相关应用程序的实例。当我们手动 运行 代理时,代理完全按照我们对所有三个实例的要求进行操作。当安排在开发和训练服务器上的特定时间时,代理也 运行 没问题。但是,当我们在 Live 服务器上安排代理时,它不会 运行 并且日志仅说明以下内容;
"Agent Manager: Execution time limit exceeded by Agent 'MatchingAlert|MatchingAlert' in database 'PBT\PBTLive.nsf'. Agent signer 'Application Development/IT/***************'"
这三台服务器的设置似乎完全相同。此外,我已将文档从 Live 转移到 Development 实例,并且它仍然按计划在 Development 实例上 运行s 所以它不可能是它在 Live 实例中处理更多文档的事实。那么是什么原因造成的呢?
编辑:刚刚发生了一些值得一提的事情。我们希望 Train 实例与 Live 实例具有完全相同的文档,所以我实际上删除了 Train 实例并使用 Live 实例作为模板制作了一个新副本,现在预定代理不是 运行ning 并且在日志中显示与 Live 实例相同的输出,因此它一定与 Live 实例有关,而不是 Live 服务器,但它会是什么?
根据日志条目,代理运行但需要很长时间才能完成任务。
也许
- "Max. LotusScript/Java execution time" in Server 文件太短或
- 您没有足够的权限作为生产服务器上的 'Application Development/IT/***************'" 签名者,代理会浪费时间一次又一次地尝试访问某些内容。
确保代理的签名者拥有执行代理所需的所有权限。
日志条目非常清楚地指出了错误所在:代理 运行 比允许的 运行 长。
最佳做法是向您的代理添加一些日志记录。
首先我要检查代理 运行 在您的测试环境中运行了多长时间(成功后右键单击代理 运行 并检查日志)。
如果该时间刚好足以在时限内完成(例如 12 分钟 运行 并且服务器配置为允许最多 15 分钟),那么 运行 代理可能就足够了在负载较重的服务器上超过时间限制。
另外:通常代理最大运行时间有两种不同的设置,"Daytime Parameters"和"Nighttime Parameters"。
如果一个代理 运行s 在夜间,它通常比白天有更多的允许 运行 时间。
根据您使用的代码,代理 运行 在数据库的一个实例上比在另一个实例上(即使在同一台服务器上)要长得多的原因可能有多种。
例如:
- 如果您 运行 通过一个视图,该视图可能不是最新的,必须先构建。这在使用频繁的服务器上可能会花费大量时间
- 连接到另一个数据库曾经被认为是一个 "local" 调用,而在另一个服务器上它是一个 "remote"- 调用。这同样会产生巨大的影响
- 由于地址簿不同,在一种情况下代理人的签名者可能只看到很少的文件,在另一种情况下会看到所有文件
- 在没有现有全文的情况下使用任何 FTSearch- 方法...
- 使用 NotesDocumentCollection.getNthDocument() 会导致巨大的性能问题
...
这都是在不知道你的代码的情况下猜测的。问题的原因很可能取决于您的代码。
再次建议:在您的代码中构建一些 "logging":让它 "tell" 你,它在哪里,它已经做了什么。让它输出运行次...
然后你会看到,你的生产环境在哪里浪费了时间。
我开发了一个 Notes 代理程序,它可以根据特定条件交叉匹配数据库中的文档。我们有一个开发服务器、一个训练服务器和一个实时服务器,每个服务器都 运行 一个相关应用程序的实例。当我们手动 运行 代理时,代理完全按照我们对所有三个实例的要求进行操作。当安排在开发和训练服务器上的特定时间时,代理也 运行 没问题。但是,当我们在 Live 服务器上安排代理时,它不会 运行 并且日志仅说明以下内容;
"Agent Manager: Execution time limit exceeded by Agent 'MatchingAlert|MatchingAlert' in database 'PBT\PBTLive.nsf'. Agent signer 'Application Development/IT/***************'"
这三台服务器的设置似乎完全相同。此外,我已将文档从 Live 转移到 Development 实例,并且它仍然按计划在 Development 实例上 运行s 所以它不可能是它在 Live 实例中处理更多文档的事实。那么是什么原因造成的呢?
编辑:刚刚发生了一些值得一提的事情。我们希望 Train 实例与 Live 实例具有完全相同的文档,所以我实际上删除了 Train 实例并使用 Live 实例作为模板制作了一个新副本,现在预定代理不是 运行ning 并且在日志中显示与 Live 实例相同的输出,因此它一定与 Live 实例有关,而不是 Live 服务器,但它会是什么?
根据日志条目,代理运行但需要很长时间才能完成任务。
也许
- "Max. LotusScript/Java execution time" in Server 文件太短或
- 您没有足够的权限作为生产服务器上的 'Application Development/IT/***************'" 签名者,代理会浪费时间一次又一次地尝试访问某些内容。
确保代理的签名者拥有执行代理所需的所有权限。
日志条目非常清楚地指出了错误所在:代理 运行 比允许的 运行 长。 最佳做法是向您的代理添加一些日志记录。
首先我要检查代理 运行 在您的测试环境中运行了多长时间(成功后右键单击代理 运行 并检查日志)。
如果该时间刚好足以在时限内完成(例如 12 分钟 运行 并且服务器配置为允许最多 15 分钟),那么 运行 代理可能就足够了在负载较重的服务器上超过时间限制。
另外:通常代理最大运行时间有两种不同的设置,"Daytime Parameters"和"Nighttime Parameters"。 如果一个代理 运行s 在夜间,它通常比白天有更多的允许 运行 时间。
根据您使用的代码,代理 运行 在数据库的一个实例上比在另一个实例上(即使在同一台服务器上)要长得多的原因可能有多种。
例如:
- 如果您 运行 通过一个视图,该视图可能不是最新的,必须先构建。这在使用频繁的服务器上可能会花费大量时间
- 连接到另一个数据库曾经被认为是一个 "local" 调用,而在另一个服务器上它是一个 "remote"- 调用。这同样会产生巨大的影响
- 由于地址簿不同,在一种情况下代理人的签名者可能只看到很少的文件,在另一种情况下会看到所有文件
- 在没有现有全文的情况下使用任何 FTSearch- 方法...
- 使用 NotesDocumentCollection.getNthDocument() 会导致巨大的性能问题 ...
这都是在不知道你的代码的情况下猜测的。问题的原因很可能取决于您的代码。
再次建议:在您的代码中构建一些 "logging":让它 "tell" 你,它在哪里,它已经做了什么。让它输出运行次... 然后你会看到,你的生产环境在哪里浪费了时间。