我试图找出一个问题,但我正在努力寻找一个可行的解决方案。这个问题可能更多的是关于理论而不是关于实施。我只是需要一些其他的观点。
问题是:
我们正在使用 Navision 应用服务器 (NAS),它通过 Reports 和 Codeunits 运行某种业务逻辑、复制、XML 处理和东西。有时,其中一些工作会陷入循环或死锁等。
理想的解决方案是修复代码单元和报告中的问题,以便他们能够处理自己的问题;但这不是一个选择。我真的无法访问这些工作的代码。
我试图找到一种方法,如何至少部分地自动检测这些问题。我能想到的唯一方法是为每个作业存储一些资源消耗统计信息(CPU、SQL CPU 和 I/O,也许是空闲时间),并在下次运行时进行比较。如果有一些重大差异,它将触发警报。
如果需要 4 小时才能完成的工作,在流程开始时卡住,我想知道在合理的时间内,而不是在 6 小时之后很明显。
我拥有对 SQL 服务器、NAS 服务器及其进程的完全访问权限。我正在使用带有 .NET 4 的 C#
谢谢你。