gpt4 book ai didi

c# 多线程应用程序中的 TCP 耗尽

转载 作者:可可西里 更新时间:2023-11-01 02:52:02 27 4
gpt4 key购买 nike

我开发了一个 c# .net 4 应用程序,它每天对组织中的每台计算机(超过 70,000 台)执行 WMI 查询。由于与此线程无关的原因,我无法从服务器运行该应用程序,而是从我的 Windows XP SP3 机器运行。该应用程序使用带有新线程的线程池供每台计算机进行查询。我的问题是,在应用程序运行一小段时间后,我用尽了所有可用的 TCP 连接,导致“RPC 错误”。我能够解决这个问题的一种方法是在查询运行后让每个线程休眠 120 秒。这个特殊的解决方案让我感到沮丧,因为在大多数情况下,查询的执行和结果的处理都在 5 到 10 秒内完成,但我必须有意地限制每个线程。该应用程序运行了 15 多个小时,而不是每个线程未被限制时的一小部分时间。关于如何解决此问题的任何更好的想法或建议?

最佳答案

The app uses the threadpool with a new thread for each computer to query.

糟糕的设计。如果切换到一个队列,其中有特定数量的线程在这里处理项目,我会切换。例如,IIS 就是这样做的。

您可能会在某处公开打开的连接数(XP 向我尖叫 32 位 - 这是非常有限的)。

使用队列和较少的线程可以避免资源耗尽。

关于c# 多线程应用程序中的 TCP 耗尽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22471516/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com