要正确使用Mongodb Java Driver,MongoClientOptions参数配置对数据库访问的并发性能影响极大。
connectionsPerHost:与目标数据库能够建立的最大connection数量。这些connection用于与数据库之间读写数据。

threadAllowedToBlockForConnectionMultiplier:如果当前所有的connection都在使用中,则每个connection上可以有多少个线程排队等待。
connectionsPerHost与threadAllowedToBlockForConnectionMultiplier的关系详解:
  1. connectionsPerHost * threadAllowedToBlockForConnectionMultiplier == 数据库允许的最大并发数量。
  2. 在调整这两个参数的配置值的时候,需要注意的是:
    1. connectionsPerHost定义了与服务器实际建立的连接数量。
    2. threadAllowedToBlockForConnectionMultiplier定义了每个连接上可以排队等待的线程数量。
    3. 相同的并发总量,connectionsPerHost越大,排队等待的线程就可以变少,单个线程实际得到数据的时间就会变短。
    4. 相同的并发总量 ,connectionsPerHost越小,排队等待的线程就会变多,单个线程实际得到数据的时间就会变长。
    5. 配置这两个参数,首先应该考虑到的是,应用服务器和数据库服务器之间可建立的连接数有多少。然后根据估算的数据库最大并发访问量来得出threadAllowedToBlockForConnectionMultiplier的值(threadAllowedToBlockForConnectionMultiplier = 最大并发访问量 / connectionsPerHost)。
    6. 注意:connectionsPerHost * threadAllowedToBlockForConnectionMultiplier 一定不能小于当前数据库的并发访问量,否则超出的线程会抛出Exception,导致服务器线程异常中断。
maxWaitTime:一个线程访问数据库的时候,在成功获取到一个可用数据库连接之前的最长等待时间。比如:当前数据库的连接都在使用中,线程T10尝试访问数据库。此时T10会在某个connection上排队等待。如果超过maxWaitTime都没有获取到这个连接的话。该线程就会抛出Exception(此处为巨坑,一定要注意)。所以maxWaitTime一定要设置的足够大,以免由于排队线程过多造成的访问数据库失败的情况。
 
connectTimeout:与数据库建立连接的timeout。
socketTimeout:数据库连接读取和写入数据的timeout。
soketKeepAlive:保持与数据库之间的连接。如果保持连接,则与数据库的连接一旦建立,就不会关闭,那么后续的数据库访问就不需要重新建立连接了。
autoConnectRetry:自动重试与服务器建立连接。
maxAutoConnectRetryTime:最多尝试重建连接多长时间。

Mongodb Java Driver 参数配置解析的更多相关文章

  1. MongoDB Java Driver操作指南

    MongoDB为Java提供了非常丰富的API操作,相比关系型数据库,这种NoSQL本身的数据也有点面向对象的意思,所以对于Java来说,Mongo的数据结构更加友好. MongoDB在今年做了一次重 ...

  2. 查看Java JVM参数配置信息命令

    查看Java JVM参数配置信息命令 java -XX:+PrintCommandLineFlags jvm运行时状态的参数,可以很快找出问题所在.现在把几个命令记录一下:1. jstat这个命令对于 ...

  3. 关于自动化测试框架,所需代码技能,Java篇——参数配置与读取.

    前言: 说在前边.像我这种假期不出去浪,在这里乖乖写文章研究代码的人,绝壁不是因为爱学习,而是自己不知道去哪玩好,而且也不想玩游戏,看电视剧什么的,结果就无聊到看代码了…… 至于如何解读代码,请把它当 ...

  4. (4.6)mysql备份还原——深入解析二进制日志(2)binlog参数配置解析

    关键词:binlog配置,binlog参数,二进制日志配置,二进制文件参数配置 关键词:binlog缓存,binlog 刷新 0.bin写入流程 写binlog流程如下:# 数据操作buffer po ...

  5. java -D 参数功能解析

    我们都知道在启动tomcat或直接执行java命令的时候可以通过参数-XX等来配置虚拟机的大小,同样,也应该留意到java -Dkey=value的参数.那么这个参数是什么作用呢? 使用案例 其实,在 ...

  6. MongoDB Java Driver

    本文使用 Java 来描述对 Mongodb 的相关操作,数据库版本是 3.2.8,驱动版本为 3.2.2. 本文将讨论 如何连接MongoDB 文档的 CURD 操作 文档的上传和下载 1. 连接到 ...

  7. [bigdata] hadoop 参数配置解析

    ResourceManager相关配置参数 yarn-site.xml 中配置 yarn.resourcemanager.address ResourceManager 对客户端暴露的地址.客户端通过 ...

  8. MongoDB Java Driver 3.4操作

    导入jar包 <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-dr ...

  9. BuguMongo是一个MongoDB Java开发框架,集成了DAO、Query、Lucene、GridFS等功能

    http://code.google.com/p/bugumongo/ 简介 BuguMongo是一个MongoDB Java开发框架,它的主要功能包括: 基于注解的对象-文档映射(Object-Do ...

随机推荐

  1. html元素英文含义

    常用html标签的英语全称及简单功能描述 <a>:anchor 定义锚 <abbr>:abbreviation 定义缩写 <acronym>: 定义只取消首字母的缩 ...

  2. UIImage图片处理,旋转、截取、平铺、缩放等操作

    来源:iOS_小松哥 链接:http://www.jianshu.com/p/9ab1205f5166 有时候我们需要处理图片,比如改变大小,旋转,截取等等,所以今天说一说图片处理相关的一些操作. 本 ...

  3. SQL 必知必会-- 第17课:创建和操作表

    我这里用的是oracle 10g,PL/SQL来做的. 第17课  创建和操纵表  14517.1  创建表  14517.2  更新表  15017.3  删除表  15317.4  重命名表  1 ...

  4. 结合源码看nginx-1.4.0之nginx全局变量ngx_cycle初始化详解

    目录 0. 摘要 1. ngx_cycle_t结构设计 2. ngx_cycle_t数据结构 3. nginx全局变量ngx_cycle初始化 4. 小结 5. 参考资料 0. 摘要 Nginx核心的 ...

  5. leetcode 题解:Binary Tree Inorder Traversal (二叉树的中序遍历)

    题目: Given a binary tree, return the inorder traversal of its nodes' values. For example:Given binary ...

  6. 《算法导论》习题解答 Chapter 22.1-5(求平方图)

    一.邻接矩阵实现 思路:如果是邻接矩阵存储,设邻接矩阵为A,则A*A即为平方图,只需要矩阵相乘即可: 伪代码: for i=1 to n for j=1 to n for k=1 to n resul ...

  7. Oracle基础(四) 用户管理

    一.用户 当创建一个数据实例时,Oracle会创建一些默认的数据库用户,如SYS,SYSTEM和SCOTT等用户.SYS和SYSTEM用户都是ORACLE的系统用户.而Scott用户是Oracle数据 ...

  8. 转载:Character data is represented incorrectly when the code page of the client computer differs from the code page of the database in SQL Server 2005

    https://support.microsoft.com/en-us/kb/904803 Character data is represented incorrectly when the cod ...

  9. oracle-SQL语言基础-事务控制命令命令

    事务控制命令命令 COMMITROLLBACKSAVEPOINTSET TRANSACTION 当第一条可执行的SQL语句开始执行,数据库事务就开始.随着下面任一事件发生,数据库事务结束:执行COMM ...

  10. android 开源库集合的链接列表

    1.  内容挺多的 https://github.com/Trinea/android-open-project