Java使用Jongo链接MongoDB(配置链接池)

﹏ヽ暗。殇╰゛Y 2023-02-13 12:30 89阅读 0赞

因为项目使用了MongoDB作为数据源,最近因为访问量的激增数据库老是崩,虽然我们使用的云数据库,有客服帮我们解决问题,但是毕竟是我们的项目的问题,根本原因还是要从我们项目入手解决问题。

jar包:mongo-java-driver-3.4.0.jar
jongo-1.3.0.jar
之前我们项目的链接方式:

  1. MongoCredential credential = MongoCredential.createCredential(userName, database, pwd.toCharArray());
  2. ServerAddress serverAddress = new ServerAddress(host, port);
  3. MongoClient mongoClient = new MongoClient(serverAddress, Arrays.asList(credential));
  4. DB mondb = mongoClient.getDB(database);
  5. jongo = new Jongo(mondb);

之前没注意过这块,出问题了就研究下。项目中是使用Jongo操作MongoClient去操作的数据库。刚开始一直不知道数据库链接池在哪配置,一直以为没有链接池,最后从网上查资料说MongoClient其实就是一个链接池。它可以配置一些链接池信息,不用再引入三方链接池。然后就改改呗。
最后改成了这样

  1. ServerAddress serverAddress = new ServerAddress(host, port);
  2. MongoCredential credential = MongoCredential.createCredential(userName, database, pwd.toCharArray());
  3. MongoClientOptions.Builder build = new MongoClientOptions.Builder();
  4. build.minConnectionsPerHost(10);
  5. build.connectionsPerHost(300); //与目标数据库能够建立的最大connection数量为50
  6. build.threadsAllowedToBlockForConnectionMultiplier(500); //如果
  7. build.maxWaitTime(1000*60*2);
  8. build.connectTimeout(1000*60*1); //与数据库建立连接的timeout设置为1分钟
  9. MongoClientOptions myOptions = build.build();
  10. //数据库连接实例
  11. MongoClient mongoClient = new MongoClient(serverAddress,Arrays.asList(credential), myOptions);
  12. DB mondb = mongoClient.getDB(database);
  13. jongo = new Jongo(mondb);

就完成了一个链接池配置。
上线,over。

发表评论

表情:
评论列表 (有 0 条评论,89人围观)

还没有评论,来说两句吧...

相关阅读