MongDB連接池參數(shù)serverSelectionTimeout、connectTimeout、maxWaitTime和socketTimeout介紹
MongDB Client請求查詢數(shù)據(jù),需要包括五個階段:
MongoDB Client需要找到可用的MongoDB Server
MongoDB Client需要和MongoDB Server建立(new)Connection
應用程序處理線程從Connection Pool中獲取Connection
數(shù)據(jù)傳輸(獲取連接后,進行Socket通信,獲取數(shù)據(jù))
斷開Collection
那么,MongoDB Client驅(qū)動設置中網(wǎng)絡相關(guān)等待超時參數(shù)serverSelectionTimeout、connectTimeout、maxWaitTime和socketTimeout分別對應上面哪個環(huán)節(jié)呢?
參數(shù)serverSelectionTimeout:對應第1個環(huán)節(jié),即MongoDB Client需要找到可用的MongoDB Server所需要的等待時間, MongDB部署的生產(chǎn)一般由多個服務器組成,要么作為一個復制集或者作為一個分片集群,參數(shù) serverSelectionTimeout的值即為多長時間內(nèi)找不到合適服務器時候就決定放棄的時間間隔;
參數(shù)connectTimeout:對應第2個環(huán)節(jié),每次創(chuàng)建Connection,對應的網(wǎng)絡等待。單位毫秒數(shù), 0表示沒有限制;
參數(shù)maxWaitTime:對應第3個環(huán)節(jié),應用程序處理線程從連接池中獲取Collection,對應的網(wǎng)絡等待時間。單位毫秒數(shù),0表示 不等待,負數(shù)表示等待時間不確定;
參數(shù)socketTimeout:對應第4個環(huán)節(jié),獲取Connection后,就有了Socket通信,獲取數(shù)據(jù),即在MonogoDB Client 和MonogoDB Server的Socket通信過程中的網(wǎng)絡等待時間。單位毫秒數(shù),默認配置為0,也就是沒有限制, 沒有超 時限制,系統(tǒng)出了問題也不容易發(fā)現(xiàn),應該根據(jù)實際情況,給出合理的超時時間。
其他相關(guān)參數(shù)如下:
connectionsPerHost:對mongo實例來說,每個host允許鏈接的最大鏈接數(shù),這些鏈接空閑時會放入池中,如果鏈接被耗盡,任何請求鏈接的操作會被阻塞等待鏈接可用,推薦配置10
minPoolsSize:當Connection空閑時,Connection Pool中最少Connection保有量;
threadsAllowedToBlockForConnectionMultiplier:每個Connection的可以阻塞等待的線程隊列數(shù),它以上面connectionsPerHost值相乘的結(jié)果就是阻塞等待的線程隊列最大值。如果連接線程排滿了隊列就會拋出“Out of semaphores to get db”錯誤。
socketKeepAlive:該標志用于控制socket保持活動的功能,通過防火墻保持連接活著
socketKeepAlive=false
autoConnectRetry:這個控制是否在一個Connection時,系統(tǒng)會自動重試
#true:假如Connection不能建立時,驅(qū)動將重試相同的server,有最大的重試次數(shù),默認為15次,這樣可以避免一些server因為一些阻塞操作零時down而驅(qū)動拋出異常,這個對平滑過度到一個新的master,也是很有用的,注意:當集群為復制集時,驅(qū)動將在這段時間里,嘗試鏈接到舊的master上,而不會馬上鏈接到新master上
#false 當在進行socket讀寫時,不會阻止異常拋出,驅(qū)動已經(jīng)有自動重建破壞鏈接和重試讀操作. 推薦配置false
autoConnectRetry=false
#重新打開鏈接到相同server的最大毫秒數(shù),推薦配置為0,如果 autoConnectRetry=true,表示時間為15s
#com.jd.mongodbclient2.mongo.JDClientMongo.maxAutoConnectRetryTime=false
#表示當沒有手動關(guān)閉游標時,是否有一個自動釋放游標對象的方法,如果你總是很小心的關(guān)閉游標,則可以將其設為false 推薦配置true
https://docs.mongodb.com/manual/reference/connection-string/#connections-connection-options
https://docs.mongodb.com/manual/reference/connection-string/#connections-connection-options
————————————————
版權(quán)聲明:本文為CSDN博主「pursuer211」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/pursuer211/article/details/82994027
posted on 2020-03-07 20:58 paulwong 閱讀(1313) 評論(0) 編輯 收藏 所屬分類: MONGODB