Fer*_*ndo 1 timeout mongodb spring-boot
我很难理解为我的应用程序配置的最佳超时设置是什么 超时设置分为三种类型:
connectTimeoutMS socketTimeoutMS maxTimeMS
除此之外,我们还有:
KeepAlive poolSize 自动重新连接
connectTimeout对应的是应用程序在指定时间范围内无法连接到mongoDB时的超时设置。我认为这会导致异常。
socketTimeoutMS 对应于套接字在关闭之前等待从数据库服务器获取响应。
maxTimeMS 对应于数据库中运行的操作的超时。这会导致异常。
socketTimeout 和 maxTimeout 有什么区别?我的要求是,当对数据库的请求在 {5} 秒后超时时,我必须记录错误代码。未从该数据库收到任何响应。为此目的的最佳超时设置是什么?
poolsize、keepAlive、autoconnected 是如何与超时设置关联的?例子会很有用。
最简单的超时解释是套接字超时。每当在套接字上执行读取或写入时,如果读取或写入时间超过超时,则操作将失败并出现错误。
然而,设置套接字超时远非简单。当执行查询时,服务器直到至少有一个文档(或者确定没有文档匹配)才会回复。这意味着套接字超时必须设置为至少与应用程序将发出的运行时间最长的查询一样高。
另外,单个查询可能涉及多次读取或写入。因此,可以想象,缓慢的网络实际上不会触发超时。
解决这个问题的方法是最大时间和保持活动:
连接超时与套接字超时类似,但在首次建立连接时应用。因此,它可以设置为低于套接字超时,因为它不需要受到查询执行时间的限制。通过设置较低的连接超时,可以在首次连接时更快地检测到失效服务器。
池大小实际上与超时没有任何关系,并且自动重新连接是特定于驱动程序的选项,实际上与超时并不属于同一类别。
归档时间: |
|
查看次数: |
16192 次 |
最近记录: |