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

时间:2013-11-15 13:07:12

标签: c# sql nas navision

我想找出一个问题,但我很难找到一个可行的解决方案。问题可能更多是关于实施的理论。我只是需要一些其他的观点。

问题是:

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

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

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

如果工作需要4个小时才能完成,在开始的过程中遇到困难,我想知道在合理的时间内,而不是在6个小时之后才明显。

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

谢谢。

1 个答案:

答案 0 :(得分:0)

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