winsock 10055错误的原因是什么?我应该如何排除故障?

Tom*_*err 5 windows-server-2003

我正在调查自定义应用程序链上的 winsock 10055 错误的一些问题(其中一些是我们控制的,一些不是),并希望获得一些有关解决问题的技术的建议。

No buffer space available.
    An operation on a socket could not be performed because the system 
    lacked sufficient buffer space or because a queue was full.
Run Code Online (Sandbox Code Playgroud)

根据研究,非分页池和端口似乎是唯一可能导致此错误的资源。 是否有其他资源可能导致 10055 错误?

目前,我们在应用程序上设置了性能计数器,并且在大多数情况下,非分页池使用率看起来很低。打开的 TCP 连接看起来很低,我不知道另一种监视端口的方法。

由于它只发生在生产中,我们无法使用更具侵入性的计数器。尽管听到其他解决方案仍然很有趣。我相信其他人可以使用这些信息。

您是否建议使用其他工具或程序来诊断导致问题的应用程序?

更新:

平台是带有 /3G 开关的 windows server 2003 x86。作为参考,x86 通常有 256mb 的 NPP 存储,/3G 将其降低到 128mb。通常,您会希望避免这种配置以避免 NPP 问题。(参考

我们有一个应用程序的来源。我已经编写了非常复杂的测试工具,试图重现该行为但无济于事。

如前所述,问题只发生在生产中。因此,避免了数据包监控。我们目前设置了性能计数器来监控 NPP、线程、网络流量等。由于 perfmon 的间隔是 1 秒,您可能会在该窗口内来来去去。然而,有一些主观证据表明这不是问题。

基本情况是连接的另一端说由于错误以10055为代码关闭了连接。NPP(和一般性能)在断开连接之前看起来很稳定,这表明其他一些资源是原因。

更新:

我还要重申,最初的问题与诊断有关,而不是解决方案。关于导致 10055 错误的原因,我仍然没有明确的答案。检查驱动程序和硬件并重新安装操作系统很好,但它回避了最初的问题。

And*_*ith 1

使用 2008 R2 服务器重新安装,这有望起作用。绝对有新的驱动程序架构和更好的网络可扩展性。