0

我试图找出一个问题,但我正在努力寻找一个可行的解决方案。这个问题可能更多的是关于理论而不是关于实施。我只是需要一些其他的观点。

问题是:

我们正在使用 Navision 应用服务器 (NAS),它通过 Reports 和 Codeunits 运行某种业务逻辑、复制、XML 处理和东西。有时,其中一些工作会陷入循环或死锁等。

理想的解决方案是修复代码单元和报告中的问题,以便他们能够处理自己的问题;但这不是一个选择。我真的无法访问这些工作的代码。

我试图找到一种方法,如何至少部分地自动检测这些问题。我能想到的唯一方法是为每个作业存储一些资源消耗统计信息(CPU、SQL CPU 和 I/O,也许是空闲时间),并在下次运行时进行比较。如果有一些重大差异,它将触发警报。

如果需要 4 小时才能完成的工作,在流程开始时卡住,我想知道在合理的时间内,而不是在 6 小时之后很明显。

我拥有对 SQL 服务器、NAS 服务器及其进程的完全访问权限。我正在使用带有 .NET 4 的 C#

谢谢你。

4

1 回答 1

0

鉴于您可以访问某些代码单元,您还需要一个免费表来在您的 Navision 安装中使用此解决方案。您可以创建一个具有 int 类型主键的日志表,设置为自动编号,并在整个过程中将一条记录插入到表中并带有时间戳。之后你会想打电话给FINDFIRST在该日志表上强制您插入的记录写入 SQL 事务日志。然后,您可以使用外部进程监控该表,如果最后一条记录时间戳长于某个阈值(可能是 30 分钟),您可以发送电子邮件或者您希望提醒自己。您可能希望在每次运行之前清空该表,以避免数据库中出现不需要的记录。或者,您可以简单地将文件写入磁盘并通过您的过程代码反复触摸文件,而不是使用表,从而更新文件的最后修改日期。然后,您的监视工具可以以相同的方式检查文件的最后修改日期,并在进程仍在运行时如果它长时间未触及,则发送警报。

于 2014-04-21T19:47:35.347 回答