国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

java - MongoSocketReadTimeoutException: Timeout while receiving message

瀏覽:108日期:2024-03-28 08:03:45

問(wèn)題描述

1.最近在使用spring-boot和用spring-data-mongo操作mongodb

2.每天早上查看服務(wù)器日志都發(fā)現(xiàn)報(bào)了同一個(gè)錯(cuò),估計(jì)是在一整晚沒(méi)人訪(fǎng)問(wèn)服務(wù)器,第二天一旦有人訪(fǎng)問(wèn)就會(huì)發(fā)生錯(cuò)誤

3.錯(cuò)誤日志為:

07:51:35.185 [cluster-ClusterId{value=’59295e6c3532f223626a2ca0’, description=’null’}-localhost:27017] INFO org.mongodb.driver.cluster - Exception in monitor thread while connecting to server localhost:27017 com.mongodb.MongoSocketReadTimeoutException: Timeout while receiving message at com.mongodb.connection.InternalStreamConnection.translateReadException(InternalStreamConnection.java:477) at com.mongodb.connection.InternalStreamConnection.receiveMessage(InternalStreamConnection.java:228) at com.mongodb.connection.CommandHelper.receiveReply(CommandHelper.java:134) at com.mongodb.connection.CommandHelper.receiveCommandResult(CommandHelper.java:121) at com.mongodb.connection.CommandHelper.executeCommand(CommandHelper.java:32) at com.mongodb.connection.InternalStreamConnectionInitializer.initializeConnectionDescription(InternalStreamConnectionInitializer.java:85) at com.mongodb.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:45) at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:116) at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:127) at java.lang.Thread.run(Thread.java:745)Caused by: java.net.SocketTimeoutException: Read timed out at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) at java.net.SocketInputStream.read(SocketInputStream.java:171) at java.net.SocketInputStream.read(SocketInputStream.java:141) at com.mongodb.connection.SocketStream.read(SocketStream.java:85) at com.mongodb.connection.InternalStreamConnection.receiveResponseBuffers(InternalStreamConnection.java:494) at com.mongodb.connection.InternalStreamConnection.receiveMessage(InternalStreamConnection.java:224) ... 8 common frames omitted07:51:31.683 [cluster-ClusterId{value=’59295e583532f22362cf3b92’, description=’null’}-localhost:27017] INFO org.mongodb.driver.cluster - Exception in monitor thread while connecting to server localhost:27017 com.mongodb.MongoSocketReadTimeoutException: Timeout while receiving message at com.mongodb.connection.InternalStreamConnection.translateReadException(InternalStreamConnection.java:477) at com.mongodb.connection.InternalStreamConnection.receiveMessage(InternalStreamConnection.java:228) at com.mongodb.connection.CommandHelper.receiveReply(CommandHelper.java:134) at com.mongodb.connection.CommandHelper.receiveCommandResult(CommandHelper.java:121) at com.mongodb.connection.CommandHelper.executeCommand(CommandHelper.java:32) at com.mongodb.connection.InternalStreamConnectionInitializer.initializeConnectionDescription(InternalStreamConnectionInitializer.java:85) at com.mongodb.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:45) at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:116) at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:127) at java.lang.Thread.run(Thread.java:745)Caused by: java.net.SocketTimeoutException: Read timed out at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) at java.net.SocketInputStream.read(SocketInputStream.java:171) at java.net.SocketInputStream.read(SocketInputStream.java:141) at com.mongodb.connection.SocketStream.read(SocketStream.java:85) at com.mongodb.connection.InternalStreamConnection.receiveResponseBuffers(InternalStreamConnection.java:494) at com.mongodb.connection.InternalStreamConnection.receiveMessage(InternalStreamConnection.java:224) ... 8 common frames omitted07:51:35.780 [cluster-ClusterId{value=’59295e403532f2236234b535’, description=’null’}-localhost:27017] INFO org.mongodb.driver.cluster - Exception in monitor thread while connecting to server localhost:27017 com.mongodb.MongoSocketReadTimeoutException: Timeout while receiving message at com.mongodb.connection.InternalStreamConnection.translateReadException(InternalStreamConnection.java:477) at com.mongodb.connection.InternalStreamConnection.receiveMessage(InternalStreamConnection.java:228) at com.mongodb.connection.CommandHelper.receiveReply(CommandHelper.java:134) at com.mongodb.connection.CommandHelper.receiveCommandResult(CommandHelper.java:121) at com.mongodb.connection.CommandHelper.executeCommand(CommandHelper.java:32) at com.mongodb.connection.InternalStreamConnectionInitializer.initializeConnectionDescription(InternalStreamConnectionInitializer.java:85) at com.mongodb.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:45) at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:116) at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:127) at java.lang.Thread.run(Thread.java:745)Caused by: java.net.SocketTimeoutException: Read timed out at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) at java.net.SocketInputStream.read(SocketInputStream.java:171) at java.net.SocketInputStream.read(SocketInputStream.java:141) at com.mongodb.connection.SocketStream.read(SocketStream.java:85) at com.mongodb.connection.InternalStreamConnection.receiveResponseBuffers(InternalStreamConnection.java:494) at com.mongodb.connection.InternalStreamConnection.receiveMessage(InternalStreamConnection.java:224) ... 8 common frames omitted08:01:39.239 [cluster-ClusterId{value=’59295e583532f22362cf3b92’, description=’null’}-localhost:27017] INFO org.mongodb.driver.connection - Opened connection [connectionId{localValue:9, serverValue:828}] to localhost:27017 08:01:39.248 [cluster-ClusterId{value=’59295e583532f22362cf3b92’, description=’null’}-localhost:27017] INFO org.mongodb.driver.cluster - Monitor thread successfully connected to server with description ServerDescription{address=localhost:27017, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersion{versionList=[3, 4, 4]}, minWireVersion=0, maxWireVersion=5, maxDocumentSize=16777216, roundTripTimeNanos=340319} 08:01:39.273 [cluster-ClusterId{value=’59295e6c3532f223626a2ca0’, description=’null’}-localhost:27017] INFO org.mongodb.driver.connection - Opened connection [connectionId{localValue:7, serverValue:827}] to localhost:27017 08:01:39.274 [cluster-ClusterId{value=’59295e403532f2236234b535’, description=’null’}-localhost:27017] INFO org.mongodb.driver.connection - Opened connection [connectionId{localValue:7, serverValue:826}] to localhost:27017 08:01:39.274 [cluster-ClusterId{value=’59295e403532f2236234b535’, description=’null’}-localhost:27017] INFO org.mongodb.driver.cluster - Monitor thread successfully connected to server with description ServerDescription{address=localhost:27017, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersion{versionList=[3, 4, 4]}, minWireVersion=0, maxWireVersion=5, maxDocumentSize=16777216, roundTripTimeNanos=105791} 08:01:39.274 [cluster-ClusterId{value=’59295e6c3532f223626a2ca0’, description=’null’}-localhost:27017] INFO org.mongodb.driver.cluster - Monitor thread successfully connected to server with description ServerDescription{address=localhost:27017, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersion{versionList=[3, 4, 4]}, minWireVersion=0, maxWireVersion=5, maxDocumentSize=16777216, roundTripTimeNanos=532381}

4.嘗試過(guò)一些解決方法,把鏈接mongodb的代碼改成:

new MongoClient(new ServerAddress(env.getProperty('mongo.host'), Integer.valueOf(env.getProperty('mongo.port'))), Arrays.asList(credential), MongoClientOptions.builder().socketTimeout(10000).minHeartbeatFrequency(25).heartbeatSocketTimeout(3000).socketKeepAlive(true).build());

也把服務(wù)器(Ubuntu)ipv4的keep alive時(shí)間改成了120秒。

但是錯(cuò)誤還在,希望大家指教指教,謝謝!

問(wèn)題解答

回答1:

多半是MongoDB把Java保持的連接踢掉了(狀態(tài)變成CLOSE_WAIT,只能發(fā)數(shù)據(jù)但無(wú)法再收到),可以從兩個(gè)地方想想辦法:

把連接池配置好(這個(gè)貌似很復(fù)雜),或者干脆不用連接池,即socketKeepAlive設(shè)成false;

因?yàn)槟愕膯?wèn)題都出現(xiàn)在早上,可以查下MongoDB有沒(méi)有凌晨重置連接的策略。

回答2:

1、可能是遇到了查詢(xún)時(shí)間過(guò)長(zhǎng)的Read,不妨看看profiling或者server log日志的信息,找到查詢(xún)時(shí)間比較長(zhǎng)的語(yǔ)句,例如超過(guò)10秒的語(yǔ)句,看是否能優(yōu)化;

2、適當(dāng)提高socketTimeout一些,看是否能緩解這種出錯(cuò)的情形。

供參考。

Love MongoDB!Have fun!

2017MongoDB中文社區(qū)北京用戶(hù)組大會(huì)在即,2017年6月3日 13:00-18:00

還有T恤等小禮物等!呵呵!

報(bào)名請(qǐng)入

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 成年人毛片视频 | 国产成人精品一区二区三区 | 日韩在线无 | 国产日本亚洲欧美 | 亚洲精品成人久久久影院 | 老司机精品影院一区二区三区 | 国产精品国产三级国产在线观看 | 亚洲国产一区二区三区在线观看 | 精品一区二区三区三区 | 99精品欧美 | 国产人成精品综合欧美成人 | 日日操干| 国产伦理久久精品久久久久 | 美欧毛片 | 久草三级 | 免费人成年短视频在线观看网站 | 成人精品视频在线观看 | 国产高清视频免费观看 | 亚洲欧美精品网站在线观看 | 成人一级视频 | 99久久国产免费 - 99久久国产免费 | 男女性男女刺激大片免费观看 | 毛片免费在线观看网址 | 精品国产96亚洲一区二区三区 | 国产三级手机在线 | 视频二区欧美 | 性色a v 一区 | 91久久国产露脸精品免费 | 日本一级毛片免费播放 | 宅男66lu国产乱在线观看 | 精品国产亚洲人成在线 | 欧美一级欧美三级 | 高清不卡一区二区三区 | 成人免费午间影院在线观看 | 一本色道久久综合网 | 亚洲素人在线 | 欧美色v| youjizzxxx69日本| 欧美另类老妇 | 国产精品久久久久久久免费大片 | 免费一级欧美在线观看视频片 |