Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 50484|回复: 0

谈MongoDB读取连接超时的异常

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-6 11:05
  • 签到天数: 748 天

    [LV.9]以坛为家II

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    705612
    发表于 2021-4-5 10:11:44 | 显示全部楼层 |阅读模式

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

    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问题全部解决。

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-4-29 15:31 , Processed in 0.071763 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表