检测第三方代码执行中的问题.(NAS 作业)



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

问题是:

我们使用Navision应用程序服务器(NAS),它通过报告和代码单元运行某种业务逻辑,复制,XML处理和东西。有时,其中一些作业会陷入循环或死锁等。

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

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

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

我有完全访问权限SQL服务器,NAS服务器及其进程。我正在使用 C# 和 .NET 4

谢谢。

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

最新更新