• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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问题全部解决。

    您可能感兴趣的文章:
    • MongoDB索引使用详解
    • MongoDB中唯一索引(Unique)的那些事
    • MongoDB的基础查询和索引操作方法总结
    • MongoDB中创建索引需要注意的事项
    • MongoDB性能篇之创建索引,组合索引,唯一索引,删除索引和explain执行计划
    • 深入理解MongoDB的复合索引
    • mongodb处理中文索引与查找字符串详解
    • 关于MongoDB索引管理-索引的创建、查看、删除操作详解
    • MongoDB自动删除过期数据的方法(TTL索引)
    • 关于对MongoDB索引的一些简单理解
    上一篇:MongoDB日志文件过大的解决方法
    下一篇:MongoDB社区版和企业版的差别对照表
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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