要正确使用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. sql server 中将由逗号“,”分割的一个字符串,转换为一个表,并应用与 in 条件

    ,,) 这样的语句和常用,但是如果in 后面的 1,2,3是变量怎么办呢,一般会用字符串连接的方式构造sql语句 string aa="1,2,3"; string sqltxt= ...

  2. WPF 之 窗口间传参数

    有如下几种方式: 1) 声明个全局变量,就是App.xaml里面声明:在所有窗体里面都可以引用 Application.Current.Properties["ArgumentName&qu ...

  3. Asp.Net 之 MasterPage

    母版页是VS2005中新引入的一个概念,它很好地实现界面设计的模块化,并且实现实现了代码的重用.它就像婚纱影楼中的婚纱模板,同一个婚纱模板可以给不同的新人用,只要把他们的照片贴在已有的婚纱模板就可以形 ...

  4. poj 3017 单调队列优化动态规划

    思路:dp[i]=min{dp[j]+max(num[j+1]...num[i])},其中sum[i]-sum[j]<=m. 那么我们需要用单调队列维护j到i的最大值. #include< ...

  5. zoj 3742 Delivery 好题

    Delivery 题目还是自己看吧 - -! 看似图论,实际上是一个考察思维以及数据结构的题. 我们对于先前和向后的边分别进行统计. 对询问离线. 小边按照左端点从大到小排序. 1.对于向后的边,询问 ...

  6. 【原】 twemproxy ketama一致性hash分析

    转贴请注明原帖位置:http://www.cnblogs.com/basecn/p/4288456.html 测试Twemproxy集群,双主双活 向twemproxy集群做写操作时,发现key的分布 ...

  7. Differential Geometry之第一章欧式空间

    书籍:<微分几何>彭家贵 局部微分几何 第一章.欧式空间 1.1向量空间 (1)向量空间 a.向量空间是集合,集合中的元素需要定义加法和乘法运算.向量空间和n维数组空间R^n不是同一个概念 ...

  8. Table of Contents - Lombok

    Installation Lombok Annotations @Getter, @Setter, @ToString, @EqualsAndHashCode & @Data @NoArgsC ...

  9. Js基础知识-入门

    创建脚本块 <script language=”JavaScript”> JavaScript code goes here </script> 隐藏脚本代码 <scri ...

  10. Android OpenGL ES(三)----编程框架

    首先当然是创建Android项目,你可以选择最新的Android Studio也可以选择eclipse都是一样的.我们重点讲解开发OpenGL ES的流程 1.定义顶点着色器和片段着色器 第一节我们讲 ...