Azure VM 上的 MongoDb 连接超时

2024-05-20

将我的 Azure Web 应用程序连接到 Azure VM 上托管的 MongoDb 时,我遇到一些超时问题。

2015-12-19T15:57:47.330+0100 I NETWORK  Socket recv() errno:10060 A connection attempt 
 failed because the connected party did not properly respond after a period of time, 
 or established connection failed because connected host has failed to respond.
2015-12-19T15:57:47.343+0100 I NETWORK  SocketException: remote: 104.45.x.x:27017 error: 
 9001 socket exception [RECV_ERROR] server [104.45.x.x:27017]
2015-12-19T15:57:47.350+0100 I NETWORK  DBClientCursor::init call() failed

目前 mongodb 配置在单个服务器上(仅用于开发),并且通过公共 IP 公开。网站使用天蓝色域名 (*.westeurope.cloudapp.azure.com) 连接到它,无需虚拟网络。

通常一切正常,但几分钟不活动后我会遇到超时异常。从我的电脑上使用 MongoDb shell 时也会发生同样的情况,所以我很确定这是 mongodb 方面的问题。

我缺少一些配置吗?


经过一番搜索后我的考虑:

  • 对 Azure 上访问的每个资源(数据库、VM 等)实施某种重试逻辑通常是一种很好的做法。对于 MongoDb 有一个部分实现,因此您应该编写自己的实现。也可以看看这个问题 https://jira.mongodb.org/browse/CSHARP-1343 and this https://jira.mongodb.org/browse/SERVER-28916.
  • 如果可能,Azure 上的所有资源都应位于同一个 Azure 虚拟网络中(这样,所有连接都使用 Azure 专用 Ip 而不是公共 Ip 进行。出于安全原因,这也很有用,因为您不需要向公众开放端点。
  • 在Azure上部署MongoDb时尝试遵循官方MongoDb 指南 https://docs.mongodb.org/ecosystem/platforms/windows-azure/.
  • 在这种特殊情况下,您应该设置net.ipv4.tcp_keepalive_time更改为低于 Azure 的 TCP 保持活动时间的值(默认情况下为 240 秒)。通过这种方式,连接被关闭,MongoDb 驱动程序可以拦截此情况并打开一个新连接。如果 Azure 关闭连接,则驱动程序无法拦截它。如果您想在 Azure 上更改此设置(不推荐),您可以在公共 IP 配置中找到它。

在我的开发环境中我设置了net.ipv4.tcp_keepalive_time到 120 现在一切似乎都正常。考虑一下,如果您在 Docker 容器内托管 MongoDb,则应该在 Docker 主机上设置此设置。

这里还有一些其他有用的链接:

  • http://focusmatic.tumblr.com/post/39569711018/solving-mongodb-connection-losses-on-windows-azure http://focusmatic.tumblr.com/post/39569711018/solving-mongodb-connection-losses-on-windows-azure
  • https://docs.mongodb.org/ecosystem/platforms/windows-azure/ https://docs.mongodb.org/ecosystem/platforms/windows-azure/
  • https://michaelmckeownblog.wordpress.com/2013/12/04/resolving-internal-ips-vs-dns-names- Between-vms/ https://michaelmckeownblog.wordpress.com/2013/12/04/resolving-internal-ips-vs-dns-names-between-vms/
  • https://gist.github.com/davideicardi/f2094c4c3f3e00fbd490 https://gist.github.com/davideicardi/f2094c4c3f3e00fbd490
  • Azure 上的 MongoDB 连接问题 https://stackoverflow.com/questions/28695879/mongodb-connection-problems-on-azure
  • MongoDB 连接超时 (Azure) https://stackoverflow.com/questions/16322874/mongodb-connection-timeouts-azure?rq=1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Azure VM 上的 MongoDb 连接超时 的相关文章

  • 调整图像的亮度、对比度和伽玛值

    在 NET 中调整图像的亮度 对比度和伽玛值的简单方法是什么 c and gdi have a simple way to control the colors that are drawn It s basically a ColorMa
  • Java 2d 游戏中的路径查找?

    本质上它是我正在开发的一款吃豆人克隆游戏 我有一个 Enemy 类 并创建了该类的 4 个实例 它们都代表游戏的 4 个幽灵 所有幽灵都会在屏幕的随机区域启动 然后它们必须朝着吃豆人角色前进 当玩家控制吃豆人并移动它时 他们应该跟随它并尽可
  • pandoc 中引用源文件外部行的转换错误

    我正在尝试将 Latex 文档转换为 docx 该死的期刊不接受 Latex 或 pdf 提交 但收到一条错误 引用了 Latex 源文件范围之外的行 该文件有 385 行 我已经检查了唯一的实例 在表格内 这些看起来没有问题 如果删除该表
  • 如何将 MemoryStream 写入 byte[] [重复]

    这个问题在这里已经有答案了 可能的重复 从流创建字节数组 https stackoverflow com questions 221925 creating a byte array from a stream 我正在尝试在内存中创建文本文
  • VueJS 中数据无法正确显示

    我的 VueJS 代码有一个小问题 在 输出 压缩的 GS1 数字链接 URI 部分中 When there is no result it should have nothing display like this I have remo
  • Django REST序列化器:创建对象而不保存

    我已经开始使用 Django REST 框架 我想做的是使用一些 JSON 发布请求 从中创建一个 Django 模型对象 然后使用该对象而不保存它 我的 Django 模型称为 SearchRequest 我所拥有的是 api view
  • Xcode 7.0 Beta 无法在 Apple Watch 上启动 watchOS 2 应用程序

    尝试了公共示例代码项目和我自己的项目 观察 watchOS 1 没有问题 watchOS 2 应用程序在真实 Apple Watch 和模拟器上成功安装并运行 但不支持通过 Xcode 在设备上启动应用程序的调试模式 尝试让系统创建Prov
  • 未初始化的局部变量是最快的随机数生成器吗?

    我知道未初始化的局部变量是未定义的行为 UB 而且该值可能有陷阱表示 这可能会影响进一步的操作 但有时我只想将随机数用于视觉表示 而不会在程序的其他部分进一步使用它们 例如 在视觉效果 例如 void updateEffect for in
  • 如何在 Firebase 控制台中使用 Apple 新的 APN .p8 证书

    随着最近 Apple 开发者帐户的升级 我面临着一个困难 在尝试创建推送通知证书时 它为我提供了 p8 证书 而不是可以导出到 p12 的 APNs 证书 Firebase 控制台仅接受 p12 证书 那么我如何从这些新的 p8 证书中获取
  • 使用 Angular 指令禁用文本选择

    我正在学习 JavaScript 和 AngularJS 我想使用 Angular Directive 禁用文本选择 我有该函数的 JavaScript 代码 function clearSelection if document sele
  • 升级 Grails 应用程序时compileAssets 失败

    我有一个运行版本 3 3 的 Grails 应用程序 我最近升级到版本4 0 3 我通常升级的方式 据我所知可能不是最好的方式 是将我的环境升级到新的 Grails 版本 然后创建一个全新的 Grails 项目 我正在使用 IntelliJ
  • 3D 图形批处理

    很多网站 文章都说 批量 批 批 有人可以解释一下着色器中的 批处理 代表什么吗 即 是否 改变纹理 更改任意着色器变量 意味着某些东西不能 批处理 最简单的总结方法就是尝试尽可能少地调用 API 来绘制您需要绘制的内容 使用顶点数组或 V
  • 在 CircleCI 中设置 Elasticsearch 和 Ruby on Rails

    我正在尝试在 Rails 应用程序中使用 Elasticsearch 设置 CircleCI 我想已经配置了镜像 但是如何在 CI 中连接到它 到目前为止我已经尝试过 https github com elastic elasticsear
  • Google Chrome 控制台过滤器 [_] 正则表达式复选框去了哪里?

    当过滤器栏展开时 例如从命令行 API 参考 https developers google com web tools chrome devtools console command line reference 我经常使用它 以至于我设
  • 为什么我无法在 WebView (UWP) 中打开外部浏览器中的链接?

    我正在开发一个即将完成的 Web 应用程序 该应用程序有一个本地 Web 应用程序 其中有一些链接 我想在外部浏览器 Edge Chrome 等 中打开它们 我的代码分为 3 部分 1 Windows运行时组件 using System u
  • Akka.net 和单元测试

    我想使用 Akka net TestKit 编写单元测试 但我有一个问题 我有一个 SubscriptionService 类 它负责将消息传输给选定的参与者 public class SubscriptionService Receive
  • Heroku 和 sails 应用程序 |崩溃和超时

    我有一个非常基本的帆应用程序在本地启动并运行 当我部署到 Heroku 时 我无法从应用程序获得响应 最终得到 应用程序错误 我有时会收到 未收到数据 赫罗库日志 2015 08 30T22 06 50 949475 00 00 herok
  • 如何在 Visual C++ 中读取版本资源

    我在 C 项目的资源中有一个版本资源 其中包含版本号 版权和构建详细信息 有没有一种简单的方法可以在运行时访问它来填充我的帮助 关于对话框 因为我目前正在维护此信息的单独常量值 理想情况下 该解决方案应适用于 Windows CE mobi
  • 在 Perl 6 中将正则表达式作为参数传递

    的延续这个问题 https stackoverflow com q 47218587 7730888 而且可能是一个更奇怪的 我可以例如连接两个regexes用一个sub 当然 我明白 如何用regex 下面的代码是完全错误的 但我希望它能
  • 当会话令牌无效时,我应该使用什么状态代码?

    创建 Web 服务 RESTful 时 当会话令牌无效时我应该使用什么状态代码 目前我公司的人给我发了一个404 未找到 但我认为这是不正确的 因为资源存在 也许我应该使用 401 Unauthorized 你怎么认为 您建议我在这种情况下

随机推荐

  • djangorest框架更改主键以使用唯一字段

    我有一个模型叫做GameProfile 这是一对一的关系User模型 我用了HyperlinkedModelSerializer贯穿我所有的设计 For the GameProfile 用户字段应该是查询的主键 它是唯一的但我没有将其设置为
  • 检测两个正则表达式是否可能匹配相同的字符串[重复]

    这个问题在这里已经有答案了 给定两个正则表达式 是否可以检测是否存在与它们都匹配的可能字符串 例如 给定正则表达式A and 我可以看到那个字符串 A 匹配他们两个 这是一个简单的案例 我的问题是针对更广泛的情况 给定任何两个有效的正则表达
  • gldrawarrays 不绘制任何东西

    我正在尝试用 VBO 绘制一个三角形 我在窗口上没有看到任何像素 我也没有看到任何 GL ERROR 这是我尝试运行的代码 include
  • 在Python中调整图像大小

    我有一张尺寸为 288 352 的图像 我想将其大小调整为 160 240 我尝试了以下代码 im imread abc png img im resize 160 240 Image ANTIALIAS 但它给出了一个错误TypeErro
  • 将网站部署到云服务的最佳实践

    在云服务上部署多个网站的最佳实践是什么 我有三个网站 是否可以将这三个网站部署到一个云服务中 一个云服务三个实例 或者我是否必须创建三个云服务并单独部署每个网站 谢谢 我的服务定义文件
  • 在 Scala 中提取案例类字段名称

    我有一个案例类 case class A field1 String field2 Int 我想在某些代码中引用确切的字符串 field1 例如 val q Query field1 gt hello performQuery q 现在我必
  • 如何以xamarin形式使用消息中心

    我正在尝试使用消息中心而不是 xamarin 表单中的 Messenger 我不知道消息中心 我尝试使用以下代码以 xamarin 表单订阅和发送消息 MessagingCenter Send this TodoTable Todo 但我不
  • Jenkins 共享库:“java.lang.NoSuchMethodError:没有这样的 DSL 方法”

    我正在尝试通过 Jenkinsfile 和共享库创建 Jenkins 管道 我通过 Web UI 创建了一个作业来获取 Jenkinsfile 它工作正常 但是 共享库内容似乎无法被 Jenkins 识别 下面是 Jenkinsfile 和
  • 链路范围 IPv6 多播数据包突然无法在 MacBook Pro 上路由?

    这是一个有点晦涩的问题 但我很困惑 我想也许有人对这个问题有更多的线索 我的同事已经在他的 MacBook Pro 上成功运行了一个使用 IPv6 多播的内部应用程序几个月了 但今天 Mac 决定停止路由多播数据包 特别是 该程序打印此错误
  • MS Teams 应用程序:访问此应用程序时出现问题

    The users on MS Teams desktop reported multiple issues with our MS Teams app They see the following error on MS Teams De
  • WinForms:如何确定窗口是否不再活动(没有子窗口具有焦点)?

    我的应用程序使用多个窗口 我想隐藏一个特定窗口 以防应用程序失去焦点 当活动窗口不是应用程序窗口时 source https stackoverflow com questions 466354 how can i tell if a wi
  • 在C语言中使用“void”

    我很困惑为什么我们需要通过void转换为 C 函数 int f void return 0 versus int f return 0 什么是正确的做法以及为什么 In C int f 是一种老式的声明 它说f需要固定但未指定数量和类型的参
  • 列表应该如何转换为具体的实现?

    假设我正在使用一个我不知道源代码的库 它有一个返回列表的方法 如下所示 public List
  • 如何在React中的Material-UI选择框中设置默认值?

    我在用选择框 https material ui com demos selects 来自材料用户界面 我想显示默认选择的 选择值 选项 但之后用户无法选择此选项
  • 具有子列表属性映射问题的自动映射器

    我有以下型号 Models public class Dish Required public Int64 ID get set Required public string Name get set Required public str
  • RSA OAEP、Golang 加密、Java 解密 -BadPaddingException:解密错误

    我正在尝试解密使用 RSA OAEP 在 Golang 中加密的字符串 但出现 BadPaddingException 解密错误 很难弄清楚我错过了什么 这是Golang加密方法 func encryptString rootPEM io
  • jq中如何分组?

    这是 json 文档 name bucket1 clusterName cluster1 name bucket2 clusterName cluster1 name bucket3 clusterName cluster2 name bu
  • 按百分比设置 bootstrap 模态身高

    我正在尝试制作一个带有主体的模态 当内容变得太大时 该主体会滚动 但是 我希望模式能够响应屏幕尺寸 当我将最大高度设置为 40 时 它没有任何效果 但是 如果我将最大高度设置为 400px 它会按预期工作 但不会响应 我确信我只是错过了一些
  • 如何在 Zend MVC 中实现 SSL

    我之前已经通过使用特定的安全文件夹 例如服务器上的 https 文件夹与 http 文件夹 实现了安全页面 我已经开始使用 Zend Framework 并希望应用程序的某些部分 例如登录 使用 https 我在谷歌上搜索过 甚至在这里搜索
  • Azure VM 上的 MongoDb 连接超时

    将我的 Azure Web 应用程序连接到 Azure VM 上托管的 MongoDb 时 我遇到一些超时问题 2015 12 19T15 57 47 330 0100 I NETWORK Socket recv errno 10060 A