1. 程式人生 > >12月7號 mongodb 超時問題

12月7號 mongodb 超時問題

參考:

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(); } }