Azure 和本地的 TCP 连接数差别很大

我现在正在尝试使用 Azure Function 从许多 Azure Blob 并行读取数据但未能这样做,因为我的服务计划不允许超过~4000TCP 连接(我在门户中收到错误消息),但是当我尝试在本地运行以下所有内容:

  • 带有所有可能标志的 netstat

  • 线鲨

  • 视图

  • Windows 任务管理器中的网络检查器

只需显示几十个项目。是否有工具或代码片段可以让我在本地模拟部署应用程序后的情况?

更好的是知道是否有可能以某种方式限制我的 Azure Function 尝试打开的 TCP 连接的数量(使用 .NET Azure SDK,或 Azure 门户,或某些 settings.json 文件或其他文件)

编辑 1:我已经将整个内容重写为连续的,并且我已经将 blob 读取拆分为100项目块,这似乎对 TCP 连接的数量有所帮助(现在大约500处于峰值,所以仍然很多,但至少适合应用程序服务计划,应用程序当然因此变得很慢),但它仍然尝试分配~4000“套接字句柄”并失败,仍然找不到在本地查看相同数量套接字的方法分配的句柄 -Handles列是DetailsWindows 任务管理器的选项卡handles在整个过程执行期间显示大致相同的数量


慕虎7371278
浏览 154回答 2
2回答

临摹微笑

回答这个问题本身:我无法找到一种方法来在本地查看我在 Azure 中实际运行我的函数时获得的与 TCP 相关的指标。目前感觉缺少一些重要的开发工具和/或文档。事实证明,“无服务器”体验是我作为 .NET 开发人员对 Windows 系统编程进行的最深入的研究。问题本身的解决方案如下:我将整个事情重写为顺序并对其进行管理以建立大约一百个同时连接。然后我只是使用二分搜索与MaxDegreeOfParallelism一起玩,直到找到适合我的计划的值。

慕斯709654

您可能会遇到 HttpClient 中的 HTTP 标准实现,默认情况下将打开的连接数限制为 2。HTTP/1.1 规范将来自应用程序的连接数限制为每个服务器两个连接。您可以使用ServicePointManager的DefaultConnectionLimit属性覆盖该默认值。微软在这里有一篇关于它的文章。
打开App,查看更多内容
随时随地看视频慕课网APP