gpt4 book ai didi

c# - Azure:无法执行套接字上的操作,因为系统缺乏足够的缓冲区空间或队列已满

转载 作者:可可西里 更新时间:2023-11-01 16:43:06 26 4
gpt4 key购买 nike

我们正在将网站迁移到 Azure,现在有时会遇到问题,但有以下异常(exception)情况:

An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full

我们为德国的长途巴士开发了一个搜索引擎,每天向外部服务发出数千个请求:

  1. MongoDB
  2. Azure 缓存
  3. Azure 存储(Blob)
  4. 外部 API

我猜,每天大约有 250,000 个电话。或多或少所有的时间都很快又很短。我们为所有外部 API 设置了 8 秒或更短的超时,以防止挂起请求。

外部 API 主要通过以下类访问:http://pastebin.com/evNUVMXp

到目前为止,一切都运行良好,但一切都只在一台机器上运行。目前,我有 2 个用于 mongodb 的虚拟机和一个用于运行 3 个大型实例的网站。

有什么想法可以解决这个问题吗?

感谢您的帮助:塞巴斯蒂安

最佳答案

我遇到的主要问题是 CosmosDB 客户端实例。建议在应用程序内将其用作静态。

因此,我建议引入数据客户端作为单例使用。

因此在应用程序中使用它就像:

DataClientFactory<EntityData>.Instance.DocumentDbRepository

其中,DataClientFactory 实现 Singleton 模式,DocumentDbRepository 实现围绕 CosmosDB 客户端 API(或您正在使用的数据客户端)的存储库模式。

CosmosDB 客户端(以及其他一些客户端)似乎被设计为对并行请求非常积极。

关于c# - Azure:无法执行套接字上的操作,因为系统缺乏足够的缓冲区空间或队列已满,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22480003/

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