zoukankan      html  css  js  c++  java
  • Mongodb read timee out异常解决办法

    完整异常信息:

    org.springframework.dao.DataAccessResourceFailureException: can't call something : /172.16.9.54:27017/mo; nested exception is com.mongodb.MongoException$Network: can't call something : /172.16.9.54:27017/mo
            at org.springframework.data.mongodb.core.MongoExceptionTranslator.translateExceptionIfPossible(MongoExceptionTranslator.java:56)
            at org.springframework.data.mongodb.core.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:1546)
            at org.springframework.data.mongodb.core.MongoTemplate.executeFindMultiInternal(MongoTemplate.java:1450)
            at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1248)
            at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1234)
            at org.springframework.data.mongodb.core.MongoTemplate.find(MongoTemplate.java:471)
            at com.sitech.persistent.PhoneBillManagerImpl.queryMoSmsObjList(PhoneBillManagerImpl.java:144)
            at com.sitech.mas.periodTask.impl.SmsMoPhoneBillTask.processTask(SmsMoPhoneBillTask.java:29)
            at com.sitech.mas.periodTask.PeriodTaskHandler.doTask(PeriodTaskHandler.java:20)
            at sun.reflect.GeneratedMethodAccessor70.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:64)
            at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:53)
            at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
            at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
            at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
            at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
            at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181)
            at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205)
            at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
            at java.lang.Thread.run(Thread.java:619)
    Caused by: com.mongodb.MongoException$Network: can't call something : /172.16.9.54:27017/mo
            at com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:292)
            at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:256)
            at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:289)
            at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:274)
            at com.mongodb.DBCursor._check(DBCursor.java:368)
            at com.mongodb.DBCursor._hasNext(DBCursor.java:459)
            at com.mongodb.DBCursor.hasNext(DBCursor.java:484)
            at org.springframework.data.mongodb.core.MongoTemplate.executeFindMultiInternal(MongoTemplate.java:1444)
            ... 20 more
    Caused by: java.net.SocketTimeoutException: Read timed out
            at java.net.SocketInputStream.socketRead0(Native Method)
            at java.net.SocketInputStream.read(SocketInputStream.java:129)
            at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
            at java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
            at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
            at org.bson.io.Bits.readFully(Bits.java:46)
            at org.bson.io.Bits.readFully(Bits.java:33)
            at org.bson.io.Bits.readFully(Bits.java:28)
            at com.mongodb.Response.<init>(Response.java:40)
            at com.mongodb.DBPort.go(DBPort.java:124)
            at com.mongodb.DBPort.call(DBPort.java:74)
            at com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:283)
            ... 27 more

    最后的read timed out是关键
    异常原因是在进行数据操作时过长时间没有返回结果。

    解决办法:设置SocketTimeout

    spring配置如下:

      <mongo:options connections-per-host="500" socket-timeout="5000" max-wait-time="5000"
                           threads-allowed-to-block-for-connection-multiplier="1000"
                           connect-timeout="30000"/>
  • 相关阅读:
    转:高并发高负载系统架构
    用java模拟银行柜台排队
    转:VS2010与SVN
    转:MySQL导入.sql文件及常用命令
    转:Mongodb中随机的查询文档记录
    转:Thumbs.db是什么文件?是病毒吗?怎么处理?
    转:OWASP发布Web应用程序的十大安全风险
    转:Top 10 Algorithms for Coding Interview
    编写C# Windows服务,用于杀死Zsd.exe进程
    转:eclipse载入extjs4出现内存溢出错误的解决方法
  • 原文地址:https://www.cnblogs.com/zhishan/p/2800749.html
Copyright © 2011-2022 走看看