【发布时间】:2021-03-20 23:38:06
【问题描述】:
我已经构建了一个 Windows 窗体应用程序,该应用程序用于生成大约 70k SSRS 报告并将它们保存到一个文件夹中以供分发。这个过程大约需要 8 个小时才能运行,所以我尝试使用 Parallel.ForEach() 来加快速度。
我可以在 MaxDegreeOfParallelism 设置为 3 的情况下运行应用程序,只要没有其他进程正在访问报表服务器、高于该值的任何进程或同时访问服务器的其他进程并且报表服务器抛出 HTTP 503 错误,因为它超载了。我无法控制其他进程可以访问服务器的内容或时间,因此我担心将 MaxDegreeOfParallelism 设置为 2 可能无法防止服务器过载。
我几乎没有使用 Parallel Library 的经验,所以我会很感激任何关于我可以做什么的方向或建议,除了使用 Parallel.ForEach() 来加速这个应用程序。
【问题讨论】:
-
你不能只是
Retry任何导致 503 错误的请求吗?或者您担心向已经过载的服务器发送请求会使其更加过载?在这种情况下,您可以考虑结合Retry和CircuitBreaker机制。
标签: c# multithreading task-parallel-library