我们在 Windows 工作站上托管第三方应用程序,并且在接收窗口上接收到窗口降级/零窗口,这是由框后面的任何通信无法证明的。
我们尝试使用perfmon
并查找资源降级,但如果资源降级程度不够大,则无法证明哪个应用进程是导致这种情况的原因。我们正在检查的应用没有调试模式来证明这一点。
处理器达到 100%,但没有磁盘活动来证明这一点;磁盘利用率处于空闲状态,但处理器正在旋转。 Perfmon
没有提供特定的线程来证明这一点。
我正在寻找一种可以应用于 Windows 服务器的工具,当出现零窗口情况或队列降级时,可以使用该工具。我们认为这是一个应用程序侦听器注入问题,但需要更精细的工具来检查这个问题。进程监视器无法为我们做到这一点;是否有类似于 Unix 上的 Snap Kit 的 Windows 工具?
有问题的应用程序驻留在工作站上,监听并接收来自外部提供商的几千个文件(最多 100k,更可能是 30k)。它通过 UNC 将这些接收到的文件写入文件共享。我们在其他工作站上有几个类似的应用程序实例,它们运行良好,但它们正在监听不同的客户端文件传输器。我们在两个不同的工作站之间安装了客户端传输器,之前出现故障的工作站在新客户端上运行良好,而之前运行良好的工作站在被分配到我们确定为问题客户端时运行得非常糟糕。我们相当肯定问题出在向我们的工作站发送信息的传输客户端上,但与此同时,我们希望能够精确地缩小服务器所占用的范围,为此,我们希望我们的工具具有更高的粒度。
更新/说明:我是一个非互联网主动型团队的提问代理,因此当您向我提问时,我会回复他们,获得答案,并在此重申。除非发生进一步事件,否则我将在周一之前与该团队保持联系,因此我将无法在周一下午之前提供大多数答案。不过,我会保留一份需要提供答案的问题清单:
我需要得到您当前问题的答案
- 检查 SysInternals 的 ProcessExplorer 或 ProcessMonitor 是否可以工作。
- 指定带有 SP 的确切 Windows 版本。
- 零通知来自哪里(WireShark?(实际上我想说是 WireShark,因为我们使用它,但在我问之前我不会给你明确的答案))。
- 一旦发生事故,从 TCP/IP 角度来看,整台机器是否会变得无响应?
答案1
您无需指定正在使用的 Windows 版本或 Service Pack 级别。
您是否看到了来自 wireshark 的“零窗口”通知或类似通知?大概是当应用程序开始出现故障时,从 TCP/IP 的角度来看,整个机器都变得无响应?
另外,该应用程序的性质是什么?大概是与某物对话。它主要是发送数据还是接收数据?
SpacemanSpiff 建议使用 Process Explorer 来查看当前统计数据(性能、I/O、线程等),这很不错。不过,我建议使用另一个 SysInternals 工具 - Process Monitor。它可以让您查看 TCP/IP 活动(而非数据包检查),并让您了解 SYN 数据包是否存在问题等。