關于mongodb連接池配置方式
mongodb連接池配置
參考官方描述
如果spring使用以下mongodb的配置
則默認是沒有連接池的
spring: data: mongodb: host: 地址 port: 27017 database: 數(shù)據(jù)庫名 username: 賬號 password: 密碼
每隔一兩分鐘沒有去請求的話就會斷開連接重連,每次都要等待5-10秒之間才重新連接上,請求速度很慢,這一點確實非常不友好。
出現(xiàn)這種問題就是maxIdleTimeMS時間太長,縮短每次連接刪除和關閉之前保持的空閑狀態(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我設置時間為30秒,不知道為什么我設置為120秒、60秒好像都不管用。
mongodb的配置
- 就盡量不要用上面的方式來配,需要使用uri的方式來去配,不需要在java代碼中去寫配置類,不需要在java代碼中去寫配置類,不需要在java代碼中去寫配置類。
spring: data: mongodb: uri: mongodb://數(shù)據(jù)庫賬號:數(shù)據(jù)庫密碼@數(shù)據(jù)庫地址:27017/數(shù)據(jù)庫名稱?connectTimeoutMS=5000&socketTimeoutMS=3000&maxPoolSize=30000&minPoolSize=0&maxIdleTimeMS=1000&readPreference=primary&retryWrites=true
- uri的前半部分:注意符號格式是固定
mongodb://數(shù)據(jù)庫賬號:數(shù)據(jù)庫密碼@數(shù)據(jù)庫地址:27017/數(shù)據(jù)庫名稱
- uri的后半部分是一些額外配置選項,使用 " ? "這個問號進行標識分割,每一個配置選項之間使用" & "符號來銜接。
?connectTimeoutMS=5000 &socketTimeoutMS=3000 &maxPoolSize=30000 &minPoolSize=0 &maxIdleTimeMS=1000 &readPreference=primary &retryWrites=true
連接池中的最小連接數(shù)。默認值為 。
connectTimeoutMS | 在超時之前嘗試連接的時間(以毫秒為單位)。默認值為 10,000 毫秒,但特定驅動程序可能具有不同的默認值 |
socketTimeoutMS | 在嘗試超時之前嘗試在套接字上發(fā)送或接收的時間(以毫秒為單位)。默認值為永不超時,盡管不同的驅動程序可能會有所不同 |
maxPoolSize | 連接池中的最大連接數(shù)。默認值為 。100 |
minPoolSize | 連接池中的最小連接數(shù)。默認值為 。0 |
maxIdleTimeMS | 連接在刪除和關閉之前可以在池中保持空閑狀態(tài)的最大毫秒數(shù)。 并非所有驅動程序都支持此選項。 |
readPreference | 指定此連接的讀取首選項。 |
retryWrites | 啟用可重試寫入。 |
需要特別注意maxIdleTimeMS這個時間的設置,多次測試證實了:超過設置的指定時間后所有線程池的空閑線程連接會被自動關閉,關閉后所有線程池空閑線程會重新連接
參數(shù)配置,根據(jù)你們需求來 ,我只是給出個示例
測試連接斷開后,控制臺日志如下:已經開啟指定數(shù)量的線程池無誤
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
MySQL報錯1118,數(shù)據(jù)類型長度過長問題及解決
在使用MySQL過程中,常見的一個問題是報錯1118,這通常發(fā)生在創(chuàng)建表時,錯誤提示為“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-10MySQL優(yōu)化案例系列-mysql分頁優(yōu)化
這篇文章主要介紹了MySQL優(yōu)化案例系列-mysql分頁優(yōu)化,需要的朋友可以參考下2016-08-08mysql創(chuàng)建觸發(fā)器時報1064錯誤問題及解決
這篇文章主要介紹了mysql創(chuàng)建觸發(fā)器時報1064錯誤問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08mysql之validate_password_policy的使用
這篇文章主要介紹了mysql之validate_password_policy的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05VS2019連接mysql8.0數(shù)據(jù)庫的教程圖文詳解
這篇文章主要介紹了VS2019連接mysql8.0數(shù)據(jù)庫的教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05