關(guān)于mongodb連接池配置方式
mongodb連接池配置
參考官方描述

如果spring使用以下mongodb的配置
則默認(rèn)是沒(méi)有連接池的
spring:
data:
mongodb:
host: 地址
port: 27017
database: 數(shù)據(jù)庫(kù)名
username: 賬號(hào)
password: 密碼每隔一兩分鐘沒(méi)有去請(qǐng)求的話就會(huì)斷開(kāi)連接重連,每次都要等待5-10秒之間才重新連接上,請(qǐng)求速度很慢,這一點(diǎn)確實(shí)非常不友好。
出現(xiàn)這種問(wèn)題就是maxIdleTimeMS時(shí)間太長(zhǎng),縮短每次連接刪除和關(guān)閉之前保持的空閑狀態(tài)等待時(shí)間就可以避免這個(gè)問(wèn)題,但也會(huì)造成連接池的頻繁連接和關(guān)閉。
每次打開(kāi)和關(guān)閉控制臺(tái)打印如下提示:
Closed connection [connectionId{localValue:11, serverValue:1607}] to xxx.cc:27017 because there was a socket exception raised by this connection.
Opened connection [connectionId{localValue:21, serverValue:1623}] to xxx.cc:27017
maxIdleTimeMS我設(shè)置時(shí)間為30秒,不知道為什么我設(shè)置為120秒、60秒好像都不管用。
mongodb的配置
- 就盡量不要用上面的方式來(lái)配,需要使用uri的方式來(lái)去配,不需要在java代碼中去寫(xiě)配置類,不需要在java代碼中去寫(xiě)配置類,不需要在java代碼中去寫(xiě)配置類。
spring:
data:
mongodb:
uri: mongodb://數(shù)據(jù)庫(kù)賬號(hào):數(shù)據(jù)庫(kù)密碼@數(shù)據(jù)庫(kù)地址:27017/數(shù)據(jù)庫(kù)名稱?connectTimeoutMS=5000&socketTimeoutMS=3000&maxPoolSize=30000&minPoolSize=0&maxIdleTimeMS=1000&readPreference=primary&retryWrites=true- uri的前半部分:注意符號(hào)格式是固定
mongodb://數(shù)據(jù)庫(kù)賬號(hào):數(shù)據(jù)庫(kù)密碼@數(shù)據(jù)庫(kù)地址:27017/數(shù)據(jù)庫(kù)名稱
- uri的后半部分是一些額外配置選項(xiàng),使用 " ? "這個(gè)問(wèn)號(hào)進(jìn)行標(biāo)識(shí)分割,每一個(gè)配置選項(xiàng)之間使用" & "符號(hào)來(lái)銜接。
?connectTimeoutMS=5000 &socketTimeoutMS=3000 &maxPoolSize=30000 &minPoolSize=0 &maxIdleTimeMS=1000 &readPreference=primary &retryWrites=true
連接池中的最小連接數(shù)。默認(rèn)值為 。
| connectTimeoutMS | 在超時(shí)之前嘗試連接的時(shí)間(以毫秒為單位)。默認(rèn)值為 10,000 毫秒,但特定驅(qū)動(dòng)程序可能具有不同的默認(rèn)值 |
| socketTimeoutMS | 在嘗試超時(shí)之前嘗試在套接字上發(fā)送或接收的時(shí)間(以毫秒為單位)。默認(rèn)值為永不超時(shí),盡管不同的驅(qū)動(dòng)程序可能會(huì)有所不同 |
| maxPoolSize | 連接池中的最大連接數(shù)。默認(rèn)值為 。100 |
| minPoolSize | 連接池中的最小連接數(shù)。默認(rèn)值為 。0 |
| maxIdleTimeMS | 連接在刪除和關(guān)閉之前可以在池中保持空閑狀態(tài)的最大毫秒數(shù)。 并非所有驅(qū)動(dòng)程序都支持此選項(xiàng)。 |
| readPreference | 指定此連接的讀取首選項(xiàng)。 |
| retryWrites | 啟用可重試寫(xiě)入。 |
需要特別注意maxIdleTimeMS這個(gè)時(shí)間的設(shè)置,多次測(cè)試證實(shí)了:超過(guò)設(shè)置的指定時(shí)間后所有線程池的空閑線程連接會(huì)被自動(dòng)關(guān)閉,關(guān)閉后所有線程池空閑線程會(huì)重新連接
參數(shù)配置,根據(jù)你們需求來(lái) ,我只是給出個(gè)示例
測(cè)試連接斷開(kāi)后,控制臺(tái)日志如下:已經(jīng)開(kāi)啟指定數(shù)量的線程池?zé)o誤

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MYSQL數(shù)據(jù)庫(kù)管理之權(quán)限管理解讀
這篇文章主要介紹了MYSQL數(shù)據(jù)庫(kù)管理之權(quán)限管理解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
MySQL報(bào)錯(cuò)1118,數(shù)據(jù)類型長(zhǎng)度過(guò)長(zhǎng)問(wèn)題及解決
在使用MySQL過(guò)程中,常見(jiàn)的一個(gè)問(wèn)題是報(bào)錯(cuò)1118,這通常發(fā)生在創(chuàng)建表時(shí),錯(cuò)誤提示為“Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual2024-10-10
MySQL優(yōu)化案例系列-mysql分頁(yè)優(yōu)化
這篇文章主要介紹了MySQL優(yōu)化案例系列-mysql分頁(yè)優(yōu)化,需要的朋友可以參考下2016-08-08
mysql創(chuàng)建觸發(fā)器時(shí)報(bào)1064錯(cuò)誤問(wèn)題及解決
這篇文章主要介紹了mysql創(chuàng)建觸發(fā)器時(shí)報(bào)1064錯(cuò)誤問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
MySQL中ONLY_FULL_GROUP_BY的使用小結(jié)
ONLY_FULL_GROUP_BY是MySQL中的一個(gè)重要SQL模式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12
mysql之validate_password_policy的使用
這篇文章主要介紹了mysql之validate_password_policy的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
VS2019連接mysql8.0數(shù)據(jù)庫(kù)的教程圖文詳解
這篇文章主要介紹了VS2019連接mysql8.0數(shù)據(jù)庫(kù)的教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05

