一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|JavaScript|易語(yǔ)言|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - Java mongodb連接配置實(shí)踐

Java mongodb連接配置實(shí)踐

2021-06-19 10:56超超boy Java教程

這篇文章主要介紹了Java mongodb連接配置實(shí)踐,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧

之前百度,google了很多,發(fā)現(xiàn)并沒有介紹mongodb生產(chǎn)環(huán)境如何配置的文章, 當(dāng)時(shí)想?yún)⒖枷露疾恍? 所以寫篇文章,大家可以一塊討論下.

1. mongoclientoptions中的連接池配置:

配置如下:

?
1
2
3
4
5
6
7
8
9
connectionpoolsettings = connectionpoolsettings.builder()
                            .minsize(getminconnectionsperhost())
                            .maxsize(getconnectionsperhost())
                            .maxwaitqueuesize(getthreadsallowedtoblockforconnectionmultiplier()
                                     * getconnectionsperhost())
                            .maxwaittime(getmaxwaittime(), milliseconds)
                            .maxconnectionidletime(getmaxconnectionidletime(), milliseconds)
                            .maxconnectionlifetime(getmaxconnectionlifetime(), milliseconds)
                            .build();

minsize: 線程池空閑時(shí)保持的最小連接數(shù), 默認(rèn)是0.

maxsize: 線程池允許的最大連接數(shù),默認(rèn)是100.

maxwaitqueuesize: 線程池等待隊(duì)列的大小, 默認(rèn)是500.

maxwaittime: 線程等待連接變?yōu)榭捎玫淖铋L(zhǎng)時(shí)間.默認(rèn)為2分鐘. 值為0意味著它不會(huì)等待. 負(fù)值意味著它將無(wú)限期地等待

maxconnectionidletime: 線程池中連接的最大空閑時(shí)間, 0標(biāo)志udine空閑時(shí)間沒有限制,超過這個(gè)時(shí)間會(huì)被關(guān)閉.

maxconnectionlifetime: 線程池中連接的最長(zhǎng)生存時(shí)間. 0表示沒有限制. 超過壽命的會(huì)被關(guān)閉,必要時(shí)通過新連接進(jìn)行替換.

2. mongoclientoptions初始化

mongodb驅(qū)動(dòng)中 mongoclientoptions 使用buidler模式配置,有關(guān)所有屬性的默認(rèn)值,都是在builder里邊配置的.

關(guān)于builder 的配置如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
  public static class builder {
    private string description;
    private string applicationname;
    //讀取偏好, 這里默認(rèn)的是從主節(jié)點(diǎn)讀取.
    private readpreference readpreference = readpreference.primary();
    //使用服務(wù)器默認(rèn)的寫關(guān)注?
    private writeconcern writeconcern = writeconcern.acknowledged;
    //使用服務(wù)的默認(rèn)讀關(guān)注,默認(rèn)是local
    private readconcern readconcern = readconcern.default;
    private codecregistry codecregistry = mongoclient.getdefaultcodecregistry();
    private final list<commandlistener> commandlisteners = new arraylist<commandlistener>();
    private final list<clusterlistener> clusterlisteners = new arraylist<clusterlistener>();
    private final list<serverlistener> serverlisteners = new arraylist<serverlistener>();
    private final list<servermonitorlistener> servermonitorlisteners = new arraylist<servermonitorlistener>();
 
    private int minconnectionsperhost;
    private int maxconnectionsperhost = 100;
    private int threadsallowedtoblockforconnectionmultiplier = 5;
    //設(shè)置服務(wù)器選擇超時(shí)(以毫秒為單位),它定義驅(qū)動(dòng)程序在拋出異常之前等待服務(wù)器選擇成功的時(shí)間
    //值為0表示如果沒有可用的服務(wù)器,它將立即超時(shí)。 負(fù)值意味著無(wú)限期等待
    private int serverselectiontimeout = 1000 * 30;
    //線程等待連接變?yōu)榭捎玫淖铋L(zhǎng)時(shí)間
    private int maxwaittime = 1000 * 60 * 2;
    // 線程池中連接的最大空閑時(shí)間
    private int maxconnectionidletime;
    private int maxconnectionlifetime;
    //連接超時(shí)時(shí)間,必須大于0
    private int connecttimeout = 1000 * 10;
    //socket超時(shí)時(shí)間
    private int sockettimeout = 0;
    //socket是否保活
    private boolean socketkeepalive = false;
    private boolean sslenabled = false;
    private boolean sslinvalidhostnameallowed = false;
    private boolean alwaysusembeans = false;
    //設(shè)置心跳頻率。 這是驅(qū)動(dòng)程序?qū)L試確定群集中每個(gè)服務(wù)器的當(dāng)前狀態(tài)的頻率。 默認(rèn)值為10,000毫秒
    private int heartbeatfrequency = 10000;
    //設(shè)置最小心跳頻率。 如果驅(qū)動(dòng)程序必須經(jīng)常重新檢查服務(wù)器的可用性,它將至少在上一次檢查后等待很長(zhǎng)時(shí)間,以避免浪費(fèi)精力。 默認(rèn)值為500毫秒。
    private int minheartbeatfrequency = 500;
    //設(shè)置用于集群心跳的連接的連接超時(shí)
    private int heartbeatconnecttimeout = 20000;
    //設(shè)置用于集群心跳的連接的套接字超時(shí)
    private int heartbeatsockettimeout = 20000;
    //本地閾值
    private int localthreshold = 15;
 
    private string requiredreplicasetname;
    private dbdecoderfactory dbdecoderfactory = defaultdbdecoder.factory;
    private dbencoderfactory dbencoderfactory = defaultdbencoder.factory;
    private socketfactory socketfactory;
    private boolean cursorfinalizerenabled = true;
...}

3. 需要關(guān)心的配置

這里就因人而異了, 我這列出比較重要的幾個(gè)配置,具體的值看業(yè)務(wù)場(chǎng)景.

 3.1 讀寫相關(guān)

這應(yīng)該是程序最應(yīng)該關(guān)注的配置了,讀關(guān)注,寫關(guān)注,讀取偏好.

?
1
2
3
4
5
6
//讀取偏好, 首先從從節(jié)點(diǎn)讀取.
private readpreference readpreference = readpreference.secondarypreferred();
//寫關(guān)注為1 ,寫入主節(jié)點(diǎn)即返回.
private writeconcern writeconcern = writeconcern.w1;
//使用服務(wù)的默認(rèn)讀關(guān)注,默認(rèn)是local(決定到某個(gè)讀取數(shù)據(jù)時(shí),能讀到什么樣的數(shù)據(jù))
private readconcern readconcern = readconcern.local;

3.2 線程池配置

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//線程池空閑時(shí)保持的最小連接數(shù)
 
minconnectionsperhost=20
 
//線程池允許的最大連接數(shù)
 
connectionsperhost=100
 
//connectionsperhost* 5 =最大隊(duì)列數(shù)
 
threadsallowedtoblockforconnectionmultiplier=5
 
//線程池中連接的最大空閑時(shí)間,5分鐘
 
maxconnectionidletime = 5*60*1000
 
 // 線程池中連接的最長(zhǎng)生存時(shí)間,采用默認(rèn)值
 
maxconnectionlifetime

3.3 連接配置

?
1
2
3
4
5
6
7
8
9
10
//設(shè)置服務(wù)器選擇超時(shí)(以毫秒為單位),它定義驅(qū)動(dòng)程序在拋出異常之前等待服務(wù)器選擇成功的時(shí)間
//值為0表示如果沒有可用的服務(wù)器,它將立即超時(shí)。 負(fù)值意味著無(wú)限期等待
private int serverselectiontimeout = 1000 * 30;
 
//連接超時(shí)時(shí)間,必須大于0
private int connecttimeout = 1000 * 5;
 
//線程等待連接變?yōu)榭捎玫淖铋L(zhǎng)時(shí)間.
 
maxwaittime=6000

這里建議 這兩個(gè)參數(shù): maxwaittime,connecttimeout,根據(jù)公司具體的業(yè)務(wù)來(lái)..

這是目前我在公司的配置參數(shù), 借鑒了其他的連接池配置比如: redis和mysql的,并不是最優(yōu)的,還在摸索實(shí)踐....

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://www.cnblogs.com/jycboy/p/10077080.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲 日本 中文字幕 制服 | 国产精品久久久久毛片真精品 | 日韩理论片在线看免费观看 | 午夜福利院电影 | 精品欧美| 日本一道高清不卡免费 | 国产91精品露脸国语对白 | 美女被灌浣肠失禁视频 | 欧美在线播放成人免费 | 出a级黑粗大硬长爽猛视频 吃胸膜奶视频456 | 色视频国产 | 日韩操片 | 日日免费视频 | sss亚洲国产欧美一区二区 | 美女gif跪趴式抽搐动态图 | 亚洲女性色尼古综合网 | 天天天综合网 | 免费观看国产大片资源视频 | 成人啪啪漫画全文阅读 | 私人影院在线播放 | 欧美摸胸 | 免费波多野结衣庭教师 | 暖暖在线日本 | 午夜理伦片免费 | 精品国内自产拍在线视频 | 天堂8在线天堂资源bt | 国产精品亚洲综合第一区 | 国产成人精品在线 | 国产激情一区二区三区成人91 | 亚洲AV人无码综合在线观看蜜桃 | 吃胸膜奶视频456 | 国产亚洲福利精品一区 | 玩50岁四川熟女大白屁股直播 | 狠狠做五月深爱婷婷天天综合 | 九九精品视频在线观看 | 日韩欧美一区二区三区视频 | chinese一tk视频丨vk | 色综合伊人色综合网亚洲欧洲 | 91桃色视频在线观看 | 精品一区二区三区高清免费不卡 | 亚洲精品视频一区 |