• autoConnectRetry仅仅意味着驱动程序会自动尝试重新连接到意外断开连接后在服务器(一个或多个)。在生产环境中,您通常需要将此设置为true。

  • connectionsPerHost是物理连接的单一实例蒙戈(它的单,所以你通常每个应用程序的话)能够建立到的mongod/mongos处理量。在撰写本文时,即使实际查询吞吐量较低,Java驱动程序也会建立这种连接数量(换句话说,您将看到mongostat中的“conn”统计值上升,直到它达到每个应用程序服务器的这个数量)。

    在大多数情况下,没有必要将此设置为高于100,但此设置是其中一项“测试并看到”的内容。请注意,您必须确保您设置足够的这种低使连接到您服务器的总量不超过

    db.serverStatus().connections.available

    在生产我们目前有这个在40

  • connectTimeout。由于名称表示毫秒数,驱动程序将在连接尝试中止之前等待。设置超时时间(15-30秒),除非有一个现实的,预期的机会,这将成为其他成功的连接尝试。通常,如果连接尝试时间超过几秒,则网络基础结构无法实现高吞吐量。

  • maxWaitTime。线程等待连接池上可用连接的数量,如果不及时发生,则会引发异常。保持默认。

  • 了socketTimeout。标准套接字超时值。设置为60秒(60000)。

  • threadsAllowedToBlockForConnectionMultiplier。 connectionsPerHost的倍数,表示如果池当前耗尽,允许等待连接变为可用的线程数。这是会导致“com.mongodb.DBPortPool $ SemaphoresOut:Out of semaphores获取db连接”异常的设置。一旦此线程队列超过threadsAllowedToBlockForConnectionMultiplier值,它将抛出此异常。例如,如果connectionsPerHost为10,并且此值为5,则在抛出上述异常之前,最多可有50个线程阻塞。

    如果你希望在吞吐量大的峰值,可能会导致大队列暂时增加该值。正因为这个原因,我们目前在1500点。如果您的查询负载一直超过服务器,那么您应该相应地改善硬件/扩展情况。

  • readPreference。 (更新2.8+)用于确定默认读取偏好和替换“slaveOk”。通过一种类工厂方法设置ReadPreference。 最常见设置的完整描述可以在这个帖子

  • W¯¯的末尾。 (更新,2.6+)该值确定写入的“安全性”。当此值为-1时,无论网络或数据库错误如何,写入都不会报告任何错误。 WriteConcern.NONE是适合此预定义的WriteConcern。如果w是0,那么网络错误将使写入失败,但mongo错误不会。这通常被称为“火灾和遗忘”写入,并应在性能比一致性和耐久性更重要时使用。为此模式使用WriteConcern.NORMAL。

    如果把W为1或更高的写入被认为是安全的。安全写入执行写入操作,然后通过向服务器发送请求进行跟踪,以确保写入成功或检索到错误值(如果没有写入)(换言之,写入后发送getLastError()命令)。请注意,在此getLastError()命令完成之前,连接被保留。作为其中的一个结果和附加命令的吞吐量将signficantly低于以w < = 0。1完全相同的MongoDB的W值保证写入成功(或失败核查的),你发送的写入实例写道。

    在副本集的情况下,您可以使用更高的值来告诉MongoDB在返回之前将写入发送到副本集的至少“w”个成员(或更准确地说,等待写入的复制“w”成员)。您还可以将w设置为字符串“majority”,它告诉MongoDB执行写入大部分副本集成员(WriteConcern.MAJORITY)的操作。通常,您应该将其设置为1,除非您需要原始性能(-1或0)或复制写入(> 1)。高于1的值对写入吞吐量有相当大的影响。

  • FSYNC。强制mongo在启用每次写入后刷新到磁盘的耐久性选项。我从来没有遇到与写入积压相关的任何持久性问题,所以我们在生产中使用了这个错误(缺省值)。

  • j * (NEW 2.7+) *。布尔值,当设置为true时,会强制MongoDB在返回之前等待成功的日记组提交。如果您启用了日记功能,则可以启用此功能以获得更多耐用性。请参阅http://www.mongodb.org/display/DOCS/Journaling以查看日志可以获取什么内容(以及为什么您可能需要启用此标志)。

ReadPreference 的ReadPreference类允许您配置什么的mongod,如果你是副本集工作查询路由实例。下列选项:

  • ReadPreference.primary():所有读取到只有repset主要成员。如果您要求所有查询返回一致的(最近写入的)数据,请使用此选项。这是默认设置。

  • ReadPreference.primaryPreferred():如果可能,所有读取转到repset主成员,但可以查询次要成员,如果主节点不可用。因此,如果主服务器变得不可用,则读取变为最终一致,但只有当主服务器不可用时。

  • ReadPreference.secondary():所有读取转到次级repset成员,主要成员仅用于写入。只有在最终一致读取的情况下才能使用它。额外的repset成员可用于扩展阅读性能,尽管repset可能有(投票)成员的数量有限制。

  • ReadPreference.secondaryPreferred():如果其中任何一个可用,所有读取都转到次级repset成员。主要成员专门用于写入,除非所有次要成员都不可用。除了用于读取的主要成员回退以外,它与ReadPreference.secondary()相同。

  • ReadPreference.nearest():读取转到可用于数据库客户端的最近的repset成员。仅在最终一致性读取可接受时才使用。最近的成员是客户端和各种repset成员之间延迟最低的成员。由于忙碌的成员最终会有更高的延迟,这个应该也会自动平衡读取负载,尽管在我的经验中,如果成员延迟相对一致,secondary(Preferred)看起来会更好。

java mongodb的MongoOptions生产级配置的更多相关文章

  1. Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

    在上一篇我们介绍了如何在IDEA中使用MAVEN,以及如何创建依赖等.那么在这一篇中,我们就试图搭建一个生产级的解决方案,大家可以使用这个解决方案作为骨架代码来搭建自己的开发环境. 在这里,我们要完成 ...

  2. 【分布式事务】基于RocketMQ搭建生产级消息集群?

    导读 目前很多互联网公司的系统都在朝着微服务化.分布式化系统的方向在演进,这带来了很多好处,也带来了一些棘手的问题,其中最棘手的莫过于数据一致性问题了.早期我们的软件功能都在一个进程中,数据的一致性可 ...

  3. 【MongoDB数据库】Java MongoDB CRUD Example

    上一页告诉我们MongoDB 命令入门初探,本篇blog将基于上一篇blog所建立的数据库和表完毕一个简单的Java MongoDB CRUD Example.利用Java连接MongoDB数据库,并 ...

  4. MongoDB(四)-- 主从配置

    一.前言 虽然MongoDB官方已经不建议使用主从模式了,但是 熟悉下 也是有用的,替代方案是采用副本集的模式.slave默认情况下是不支持读写的,但是master会把数据同步到slave,不支持客户 ...

  5. 使用 Sealos 在 3 分钟内快速部署一个生产级别的 Kubernetes 高可用集群

    本文首发于:微信公众号「运维之美」,公众号 ID:Hi-Linux. 「运维之美」是一个有情怀.有态度,专注于 Linux 运维相关技术文章分享的公众号.公众号致力于为广大运维工作者分享各类技术文章和 ...

  6. 微信自研生产级paxos类库PhxPaxos实现原理介绍

    转载自:   http://mp.weixin.qq.com/s?__biz=MzI4NDMyNTU2Mw==&mid=2247483695&idx=1&sn=91ea4229 ...

  7. Kubernetes 1.14发布:对Windows节点的生产级支持、Kubectl更新与持久本地卷通用版本已全面到来

    今天,我们高兴地宣布Kubernetes 1.14版本的正式亮相,这亦是我们在2019年当中进行的首次发布!Kubernetes 1.14版本由31项增强功能组成,具体包括:10项稳定版功能,12项b ...

  8. MongoDB高可用集群配置方案

    原文链接:https://www.jianshu.com/p/e7e70ca7c7e5 高可用性即HA(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非 ...

  9. 手把手教你使用 Spring Boot 3 开发上线一个前后端分离的生产级系统(一) - 介绍

    项目简介 novel 是一套基于时下最新 Java 技术栈 Spring Boot 3 + Vue 3 开发的前后端分离的学习型小说项目,配备详细的项目教程手把手教你从零开始开发上线一个生产级别的 J ...

随机推荐

  1. 天兔(Lepus)数据库监控系统安装笔记

    天兔(Lepus)数据库监控系统安装笔记 一.部署:本次操作系统:centos6.9 IP:192.168.153.145Lepus_v3.8_beta MySQL-python-1.2.5xampp ...

  2. centos7制作本地yum源

    创建想要挂载的路径 mkdir /mnt/cdrom 挂载本地镜像到创建的目录 mount -t iso9660 /dev/cdrom /mnt/cdrom/ mount: /dev/sr0 is w ...

  3. Win7 VS2017编译Godot3.0.2和2.1.4

    千呼万唤屎出来,Godot终于发布3.0版本的源码了,今天是2018年3月17日,自去年接触过后,一直没事就刷刷Gayhub,看看3.0什么时候更新,刷了一年也没结果. 今天上Youtube无意中搜了 ...

  4. 对excel文件的读取

    poi上传文件,准备 <dependencies><dependency> <groupId>org.apache.poi</groupId> < ...

  5. git撤销commit-hard

    场景: 不小心commit了一个不应该commit的修改,但是还没有push,想撤销那个commit 命令: a)git log b)git reset --hard commit_id 具体步骤如下 ...

  6. DataTransfer对象的一些总结

    所有元素都支持防止目标事件,但是这些元素默认是不允许释放的,如果拖动元素经过不允许放置的元素无论用户如何操作,都不会触发drop事件,不过可以把任何元素变成有效的放置目标.方法是重写dropenter ...

  7. java 调用 api接口

    /* * Copyright 2018 textile.com All right reserved. This software is the * confidential and propriet ...

  8. ntile函数

    ntile函数可以对序号进行分组处理,将有序分区中的行分发到指定数目的组中. 各个组有编号,编号从一开始. 对于每一个行,ntile 将返回此行所属的组的编号.这就相当于将查询出来的记录集放到指定长度 ...

  9. Lucene用法示例

    整理一下 ELK 和 Grafana 中会用到的 Lucene 用法: 通配符 示例1:过滤出 url 中包含 .pw/ 的 网址 url.keyword:*.pw\/* 正则表达式 示例1:过滤出 ...

  10. java解析json数据用到的jar包

    百度云连接: https://pan.baidu.com/s/1iuQCc7uBO5XtAsNn6hwCew