当前位置: 首页 > 编程笔记 >

MongoDB查询字段没有创建索引导致的连接超时异常解案例分享

仲孙夕
2023-03-14
本文向大家介绍MongoDB查询字段没有创建索引导致的连接超时异常解案例分享,包括了MongoDB查询字段没有创建索引导致的连接超时异常解案例分享的使用技巧和注意事项,需要的朋友参考一下

今天在现场的哥们发来异常,让我解决,错误信息如下:


HTTP Status 500 - Read operation to server 192.168.1.110:20001 failed on database wpdb; nested exception is com.mongodb.MongoException$Network: Read operation to server 192.168.1.110:20001 failed on database wpdb

 

--------------------------------------------------------------------------------

 

type Exception report

 

message Read operation to server 192.168.1.110:20001 failed on database wpdb; nested exception is com.mongodb.MongoException$Network: Read operation to server 192.168.1.110:20001 failed on database wpdb

 

description The server encountered an internal error that prevented it from fulfilling this request.

 

exception 

 

org.springframework.dao.DataAccessResourceFailureException: Read operation to server 192.168.1.110:20001 failed on database wpdb; nested exception is com.mongodb.MongoException$Network: Read operation to server 192.168.1.110:20001 failed on database wpdb

    org.springframework.data.mongodb.core.MongoExceptionTranslator.translateExceptionIfPossible(MongoExceptionTranslator.java:56)

    org.springframework.data.mongodb.core.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:1913)

    org.springframework.data.mongodb.core.MongoTemplate.executeFindOneInternal(MongoTemplate.java:1743)

    org.springframework.data.mongodb.core.MongoTemplate.doFindOne(MongoTemplate.java:1557)

    org.springframework.data.mongodb.core.MongoTemplate.findOne(MongoTemplate.java:497)

    com.geoway.ime.tile.dao.impl.TileDaoImpl.getTile(TileDaoImpl.java:60)

    com.geoway.ime.tile.service.impl.TileServiceImpl.getTile(TileServiceImpl.java:105)

    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

    java.lang.reflect.Method.invoke(Method.java:597)

    org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)

    org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)

    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)

    org.springframework.cache.interceptor.CacheInterceptor$1.invoke(CacheInterceptor.java:58)

    org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:211)

    org.springframework.cache.interceptor.CacheInterceptor.invoke(CacheInterceptor.java:66)

    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

    org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)

    com.sun.proxy.$Proxy50.getTile(Unknown Source)

    com.geoway.ime.server.rest.TileServer.getTileKVP(TileServer.java:60)

    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

    java.lang.reflect.Method.invoke(Method.java:597)

    com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)

    com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)

    com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)

    com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)

    com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)

    com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)

    com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)

    com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1511)

    com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1442)

    com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1391)

    com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1381)

    com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)

    com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)

    com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)

    javax.servlet.http.HttpServlet.service(HttpServlet.java:723)

    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)

    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:106)

 

 

root cause 

 

com.mongodb.MongoException$Network: Read operation to server 192.168.1.110:20001 failed on database wpdb

    com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:308)

    com.mongodb.DBTCPConnector.call(DBTCPConnector.java:279)

    com.mongodb.DBCollectionImpl.find(DBCollectionImpl.java:84)

    com.mongodb.DBCollectionImpl.find(DBCollectionImpl.java:66)

    com.mongodb.DBCollection.findOne(DBCollection.java:870)

    com.mongodb.DBCollection.findOne(DBCollection.java:844)

    com.mongodb.DBCollection.findOne(DBCollection.java:790)

    org.springframework.data.mongodb.core.MongoTemplate$FindOneCallback.doInCollection(MongoTemplate.java:1980)

    org.springframework.data.mongodb.core.MongoTemplate$FindOneCallback.doInCollection(MongoTemplate.java:1965)

    org.springframework.data.mongodb.core.MongoTemplate.executeFindOneInternal(MongoTemplate.java:1739)

    org.springframework.data.mongodb.core.MongoTemplate.doFindOne(MongoTemplate.java:1557)

    org.springframework.data.mongodb.core.MongoTemplate.findOne(MongoTemplate.java:497)

    com.geoway.ime.tile.dao.impl.TileDaoImpl.getTile(TileDaoImpl.java:60)

    com.geoway.ime.tile.service.impl.TileServiceImpl.getTile(TileServiceImpl.java:105)

    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

    java.lang.reflect.Method.invoke(Method.java:597)

    org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)

    org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)

    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)

    org.springframework.cache.interceptor.CacheInterceptor$1.invoke(CacheInterceptor.java:58)

    org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:211)

    org.springframework.cache.interceptor.CacheInterceptor.invoke(CacheInterceptor.java:66)

    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

    org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)

    com.sun.proxy.$Proxy50.getTile(Unknown Source)

    com.geoway.ime.server.rest.TileServer.getTileKVP(TileServer.java:60)

    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

    java.lang.reflect.Method.invoke(Method.java:597)

    com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)

    com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)

    com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)

    com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)

    com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)

    com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)

    com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)

    com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1511)

    com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1442)

    com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1391)

    com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1381)

    com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)

    com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)

    com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)

    javax.servlet.http.HttpServlet.service(HttpServlet.java:723)

    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)

    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:106)

 

 

root cause 

 

java.net.SocketTimeoutException: Read timed out

    java.net.SocketInputStream.socketRead0(Native Method)

    java.net.SocketInputStream.read(SocketInputStream.java:129)

    java.io.BufferedInputStream.fill(BufferedInputStream.java:218)

    java.io.BufferedInputStream.read1(BufferedInputStream.java:258)

    java.io.BufferedInputStream.read(BufferedInputStream.java:317)

    org.bson.io.Bits.readFully(Bits.java:48)

    org.bson.io.Bits.readFully(Bits.java:35)

    org.bson.io.Bits.readFully(Bits.java:30)

    com.mongodb.Response.<init>(Response.java:42)

    com.mongodb.DBPort$1.execute(DBPort.java:141)

    com.mongodb.DBPort$1.execute(DBPort.java:135)

    com.mongodb.DBPort.doOperation(DBPort.java:164)

    com.mongodb.DBPort.call(DBPort.java:135)

    com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:300)

    com.mongodb.DBTCPConnector.call(DBTCPConnector.java:279)

    com.mongodb.DBCollectionImpl.find(DBCollectionImpl.java:84)

    com.mongodb.DBCollectionImpl.find(DBCollectionImpl.java:66)

    com.mongodb.DBCollection.findOne(DBCollection.java:870)

    com.mongodb.DBCollection.findOne(DBCollection.java:844)

    com.mongodb.DBCollection.findOne(DBCollection.java:790)

    org.springframework.data.mongodb.core.MongoTemplate$FindOneCallback.doInCollection(MongoTemplate.java:1980)

    org.springframework.data.mongodb.core.MongoTemplate$FindOneCallback.doInCollection(MongoTemplate.java:1965)

    org.springframework.data.mongodb.core.MongoTemplate.executeFindOneInternal(MongoTemplate.java:1739)

    org.springframework.data.mongodb.core.MongoTemplate.doFindOne(MongoTemplate.java:1557)

    org.springframework.data.mongodb.core.MongoTemplate.findOne(MongoTemplate.java:497)

    com.geoway.ime.tile.dao.impl.TileDaoImpl.getTile(TileDaoImpl.java:60)

    com.geoway.ime.tile.service.impl.TileServiceImpl.getTile(TileServiceImpl.java:105)

    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

    java.lang.reflect.Method.invoke(Method.java:597)

    org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)

    org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)

    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)

    org.springframework.cache.interceptor.CacheInterceptor$1.invoke(CacheInterceptor.java:58)

    org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:211)

    org.springframework.cache.interceptor.CacheInterceptor.invoke(CacheInterceptor.java:66)

    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

    org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)

    com.sun.proxy.$Proxy50.getTile(Unknown Source)

    com.geoway.ime.server.rest.TileServer.getTileKVP(TileServer.java:60)

    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

    java.lang.reflect.Method.invoke(Method.java:597)

    com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)

    com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)

    com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)

    com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)

    com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)

    com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)

    com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)

    com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1511)

    com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1442)

    com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1391)

    com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1381)

    com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)

    com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)

    com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)

    javax.servlet.http.HttpServlet.service(HttpServlet.java:723)

    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)

    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:106)

 

 

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.41 logs.

由异常来看,是由于MongoDB连接超时造成的。于是,往MongoDB上找原因。首先上MongoDB的配置文件:


mongodb.replica-set=192.98.12.242:30007,192.98.12.245:30007

mongodb.hostname=192.98.12.245

mongodb.port=30007

mongodb.connections-per-host=1000

mongodb.threads-allowed-to-block-for-connection-multiplier=200

mongodb.connect-timeout=2000

mongodb.max-wait-time=2000

mongodb.auto-connect-retry=true

mongodb.socket-keep-alive=true

mongodb.socket-timeout=1500

mongodb.slave-ok=true

mongodb.write-number=1

mongodb.write-timeout=1000

mongodb.write-fsync=true

mongodb.dbname=shardvectordb

mongodb.dbuser=

mongodb.dbpassword=

连接时间2秒。然后在定位mongodb的查询,结果为6、7秒。原来是这个原因。然后定位,一个查询为什么耗时那么久呢?

经过排查,原来是查询字段没有创建索引。然后把索引创建,查询几十毫秒,ok问题全部解决。

 类似资料:
  • 我有一张这样定义的表。其中是主键,是来自另一个表的外键。它在我的笔记本电脑上运行,因此,它是一个本地数据库。在我的表中,我有大约900万条条目。我运行以下命令为表创建新索引: 它运行了大约 10 分钟,我收到以下错误消息: 我检查了我的日志,结果是这样的: 虽然,我收到了一条错误消息,但当我检查索引时,结果是这样的。我不知道问题可能是什么,以及如何解决它,也不知道我创建的索引是否真的有效。有什么想

  • 我正在通过猫鼬使用MongoDB。 > MongoDB是执行集合扫描还是索引有助于提高查询效率?查询是否与仅使用id字段有任何不同? 如果MongoDB在您查询非索引字段时进行集合扫描。如果集合扫描完全相同,查询多个非索引字段是否会加快查询速度?假设我查询五个非索引字段而不是两个(都返回相同的文档)。两个查询是否都进行相同的集合扫描?

  • 问题内容: 我需要加快在应用程序中执行12个查询的速度。我从常规的foreach切换到Parallel.ForEach。但是有时我会收到一条错误消息,提示“ ExecuteReader需要打开且可用的连接。连接的当前状态为连接中”。据我了解,由于12个查询中的许多查询都使用相同的InitialCatalog,因此12个查询中并没有真正的新连接,这可能是问题所在吗?我怎样才能解决这个问题?“ sql

  • 问题内容: 您是否需要为Oracle数据库中按字段分组的字段创建索引? 例如: 我正在测试我为上面创建的索引,与此查询唯一相关的索引是为field_two创建的索引。在任何其他字段上创建的其他单字段索引或组合索引将不会用于上述查询。这听起来正确吗? 问题答案: 可能是正确的,但这取决于您拥有多少数据。通常,我会为我在GROUP BY中使用的列创建索引,但是在您的情况下,优化器可能已经决定,在使用f

  • 本文向大家介绍分析一个MySQL的异常查询的案例,包括了分析一个MySQL的异常查询的案例的使用技巧和注意事项,需要的朋友参考一下 问题 用户工单疑问:相同的语句,只是最后的limit行数不同。奇怪的是,limit 10 的性能比limit 100的语句还慢约10倍。 隐藏用户表信息,语句及结果如下 执行时间3 min 3.65 sec 执行时间1.24Sec. 性能差距非常大! 分析 MySQL

  • 一些背景: 我有一个使用3G或4G数据连接的Android应用程序。但它也连接到一个wifi热点,以便在热点设备和应用程序之间传输一些数据。 我想做的是:创建一个到这个wifi热点的套接字连接,并通过这个套接字发送/接收数据。 我添加了以下代码,以确保我们在创建套接字时使用wifi热点wifi(否则它有时最终会使用数据连接): 这似乎没问题。但是,我在尝试连接到远程服务器地址时发现问题。下面是我正