要正确使用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. JavaSE——面向对象与面向过程、类与对象、(属性、方法、构造器)等

    一:面向对象与面向过程 二者都是一种思想,面向对象是相对于面向过程而言的. 面向过程: 1.面向过程思想强调的是过程(动作). 2.在面向过程的开发中,其实就是面向着具体的每一个步骤和过程,把每一个步 ...

  2. IE 9渲染overflow的bug及解决

    问题: table父级元素div设置overflow:auto, 当触发table中的checkbox,dropdownlist事件控件时,父级div高度会自动增加(在底部增加空白行). 解决方案: ...

  3. C#之结构化异常处理

    1.异常处理4要素 一个表示异常详细信息的类类型: 一个向调用者引发异常类实例的成员: 调用者的一段调用异常成员的代码块: 调用者的一段处理将要发生异常的代码块:

  4. Java中transient有何作用?

    transient关键字用来防止序列化域.如果一个引用类型被transient修饰,则其反序列化的结果是null.基本类型则为0.如果引用类型时不可序列化的类,则也应该使用transient修饰,它在 ...

  5. java产生不重复的随机数

    /** *产生9位不同的随机数 */ private String getRandomString(){ StringBuffer sb = new StringBuffer(); for(int i ...

  6. Android的Task和Activity相关

    android:allowTaskReparenting    用来标记Activity能否从启动的Task移动到有着affinity的Task(当这个Task进入到前台时)——“true”,表示能移 ...

  7. Oracle安装步骤及PL/SQL Developer连接数据库

    一:Oracle安装步骤及PL/SQL Developer连接数据库 win7 64位 11g 点击(操作步骤):http://www.cnblogs.com/haoke/articles/27343 ...

  8. jQuery全选与反选,且解决点击只执行一次的问题

    <html> <head> <script src="jquery-1.11.1.min.js" type="text/javascript ...

  9. python 基础——常用日志装饰器

    from functools import wraps class logit(): def __init__(self, logfile='out.log'): self.log = logfile ...

  10. Netty4 自定义Decoder,Encoder进行对象传递

    首先我们必须知道Tcp粘包和拆包的,TCP是个“流”协议,所谓流,就是没有界限的一串数据,TCP底层并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际数据进行包的划分,一个完整的包可能会被拆分 ...