12月7號 mongodb 超時問題
阿新 • • 發佈:2018-12-07
參考:
https://blog.csdn.net/ljqwstc/article/details/78399261
https://www.cnblogs.com/linzhanfly/p/9674778.html
https://my.oschina.net/didispace/blog/1647477?p=1
二.連線池的重要引數
內建連線池有多個重要引數,分別是:
- connectionsPerHost:每個主機的連線數
- threadsAllowedToBlockForConnectionMultiplier:執行緒佇列數,它以上面connectionsPerHost值相乘的結果就是執行緒佇列最大值。如果連線執行緒排滿了佇列就會丟擲“Out of semaphores to get db
- maxWaitTime:最大等待連線的執行緒阻塞時間
- connectTimeout:連線超時的毫秒。0是預設和無限
- socketTimeout:socket超時。0是預設和無限
- autoConnectRetry:這個控制是否在一個連線時,系統會自動重試
注意mongodb 的資料庫版本
用版本3.4
maven
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency>
出現了這個timeout 問題,加了配置
import com.mongodb.MongoClientOptions; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class MongoDbSettings { @Bean public MongoClientOptions mongoOptions() {return MongoClientOptions .builder() .connectTimeout(0) .socketTimeout(0) .socketKeepAlive(false) .maxConnectionIdleTime(60000) .build(); } }