当前位置: 首页 > 知识库问答 >
问题:

为什么我的mongo数据库最多有4个开放连接?

岳嘉良
2023-03-14

我第一次使用Spring,我正在尝试开发一个RESTful API。使用Spring Data MongoDBMongoRepository,我想知道为什么在我的日志中出现多达4个打开的连接:

[  restartedMain] org.mongodb.driver.cluster               : Cluster created with settings {hosts=[127.0.0.1:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
[127.0.0.1:27017] org.mongodb.driver.connection            : Opened connection [connectionId{localValue:1, serverValue:1}] to 127.0.0.1:27017
[127.0.0.1:27017] org.mongodb.driver.cluster               : Monitor thread successfully connected to server with description ServerDescription{address=127.0.0.1:27017, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersion{versionList=[3, 4, 4]}, minWireVersion=0, maxWireVersion=5, maxDocumentSize=16777216, roundTripTimeNanos=1907739}
[  restartedMain] org.mongodb.driver.cluster               : Cluster created with settings {hosts=[localhost:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
[localhost:27017] org.mongodb.driver.connection            : Opened connection [connectionId{localValue:2, serverValue:2}] to localhost:27017
[localhost:27017] 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=1145793}
[  restartedMain] org.mongodb.driver.connection            : Opened connection [connectionId{localValue:3, serverValue:3}] to localhost:27017
[  restartedMain] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
[  restartedMain] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
[ restartedMain] org.mongodb.driver.connection : Opened connection [connectionId{localValue:4, serverValue:4}] to 127.0.0.1:27017

我的mongo配置:

@Configuration
@EnableMongoRepositories(basePackages="com.api.repo")
class MongoConfig extends AbstractMongoConfiguration {

    @Value("${spring.data.mongodb.host}")
    private String url;
    @Value("${spring.data.mongodb.port}")
    private int port;
    @Value("${spring.data.mongodb.database}")
    private String db;

    @Override
    protected String getDatabaseName() {
        return db;
    }

    @Override
    public Mongo mongo() throws Exception {

//      return new Fongo("meh").getMongo();
        return new MongoClient(url, port);
    }

    @Override
    protected Collection<String> getMappingBasePackages() {
        return Arrays.asList("com.api");
    }

共有2个答案

阮华美
2023-03-14

进入你的mongo和Min并运行db。serverStatus()。连接您将看到打开的连接。看起来没有关闭连接。。。请在stackoverflow中查看此页面

陈增
2023-03-14

我一直在尝试Mongoopions。

@Bean
    public MongoClientOptions mongoOptions() {
        return MongoClientOptions.builder().threadsAllowedToBlockForConnectionMultiplier(2).maxConnectionIdleTime(1).connectionsPerHost(1).minConnectionsPerHost(1).socketTimeout(2000).build();
    }

使用此配置,我能够管理连接。在我的情况下,我使用Spring引导和Spring数据,所以这是我除了application.properties之外的唯一配置

spring.data.mongodb.port=27017
spring.data.mongodb.database=your_database

请记住,如果您使用例如“mongobee”,它将打开您无法通过此配置管理的新连接。

 类似资料:
  • 我正在尝试使用python和MySQL开发药房管理系统。但我在连接数据库时遇到了问题。 下面是一些代码:

  • 如果我分割成多个数据库,所有的东西仍然是单线程的,而且我仍然只能使用一个核心。如果我只是在同一个盒子上启动另一个Redis实例,我将使用一个额外的核心。最重要的是,我不能给Redis数据库命名,也不能给它们任何更符合逻辑的标识符。那么,说完所有这些,为什么/什么时候我会想要使用多个Redis数据库,而不是仅仅为我想要的每个额外数据库构建一个额外的Redis实例呢?与此相关的是,为什么Redis不尝

  • 在节点中使用mongoose插件。js应用程序将开启不止一个连接,即使我只调用

  • 从bugu-mongo 2.11版本开始,支持连接到多个数据库。 在前面的示例代码中,我们都只是连接到一个数据库: //默认的数据库连接 BuguConnection conn = BuguFramework.getInstance().createConnection(); conn.setHost("192.168.0.100"); conn.setPort(27017); conn.setU

  • 本文向大家介绍为什么我们需要一个数据库,包括了为什么我们需要一个数据库的使用技巧和注意事项,需要的朋友参考一下 数据库是数据的集合,通常以电子形式存储。数据库的设计通常是为了使其易于存储和访问信息。 好的数据库对任何公司或组织都至关重要。这是因为数据库存储了有关公司的所有相关详细信息,例如员工记录,交易记录,工资详细信息等。 数据库重要的各种原因是- 管理大量数据 数据库每天存储和管理大量数据。使

  • 我有一个Spring Boot JPA应用程序,在Consor注册为微服务: 我的申请。yml看起来像这样: 但是,当concur联系endpoint时,我的应用程序中会抛出以下: “不允许主机‘172.17.0.1’连接到此MySQL服务器”。 到底发生了什么,为什么会有连接尝试?