我的公司有一个应用程序,可以跟踪与托管在各种机器上的网站相关的信息。中央服务器运行 Windows 服务,该服务获取要检查的站点列表,然后查询在这些目标站点上运行的服务以获取可用于更新本地数据的响应。
我的任务是对这个过程应用多线程,以减少运行所有站点所需的时间(几乎 3000 个站点需要大约 8 小时才能顺序运行)。该服务在不是多线程时成功运行,但是当我将工作分散到多个线程(现在使用 3 个测试,加上一个观察者线程)时,出现了一个奇怪的崩溃,似乎源于对远程服务的调用应该提供数据。这是一个 SOAP/XML 调用。
在测试服务器上运行时,服务只是放弃并且没有完成它的任务,但不会停止运行。当通过调试器(Dev Studio 2010)运行时,整个事情就停止了。我会运行它,几秒钟后它会停止调试,但不是因为它完成了。它不会抛出异常或给我任何类型的消息。有了断点,我可以走到它刚刚停止的地方。事件记录将我带到同一个地方。它停在试图从其他站点上的 Web 服务获取响应的代码行上。再说一遍:它只在多线程时才这样做。
我发现一些信息表明默认为 2 的连接数有限制。建议的解决方案是在 app.config 中添加一些标签,但这并没有解决问题......
<system.net>
<connectionManagement>
<add address="*" maxconnection="20"/>
</connectionManagement>
</system.net>
我仍然认为这可能与允许的连接数有关,但我一直无法很好地在网上找到有关它的信息。有什么简单的我想念的吗?任何帮助将非常感激。