paulwong

          MongDB連接池參數serverSelectionTimeout、connectTimeout、maxWaitTime和socketTimeout介紹

          MongDB Client請求查詢數據,需要包括五個階段:
          MongoDB Client需要找到可用的MongoDB Server
          MongoDB Client需要和MongoDB Server建立(new)Connection
          應用程序處理線程從Connection Pool中獲取Connection
          數據傳輸(獲取連接后,進行Socket通信,獲取數據)
          斷開Collection
          那么,MongoDB Client驅動設置中網絡相關等待超時參數serverSelectionTimeout、connectTimeout、maxWaitTime和socketTimeout分別對應上面哪個環節呢?
          參數serverSelectionTimeout:對應第1個環節,即MongoDB Client需要找到可用的MongoDB Server所需要的等待時間,                                             MongDB部署的生產一般由多個服務器組成,要么作為一個復制集或者作為一個分片集群,參數                                                     serverSelectionTimeout的值即為多長時間內找不到合適服務器時候就決定放棄的時間間隔;
          參數connectTimeout:對應第2個環節,每次創建Connection,對應的網絡等待。單位毫秒數, 0表示沒有限制;
          參數maxWaitTime:對應第3個環節,應用程序處理線程從連接池中獲取Collection,對應的網絡等待時間。單位毫秒數,0表示                                   不等待,負數表示等待時間不確定;
          參數socketTimeout:對應第4個環節,獲取Connection后,就有了Socket通信,獲取數據,即在MonogoDB Client                                                      和MonogoDB Server的Socket通信過程中的網絡等待時間。單位毫秒數,默認配置為0,也就是沒有限制,                                  沒有超 時限制,系統出了問題也不容易發現,應該根據實際情況,給出合理的超時時間。
           
          其他相關參數如下:
          connectionsPerHost:對mongo實例來說,每個host允許鏈接的最大鏈接數,這些鏈接空閑時會放入池中,如果鏈接被耗盡,任何請求鏈接的操作會被阻塞等待鏈接可用,推薦配置10
          minPoolsSize:當Connection空閑時,Connection Pool中最少Connection保有量;
          threadsAllowedToBlockForConnectionMultiplier:每個Connection的可以阻塞等待的線程隊列數,它以上面connectionsPerHost值相乘的結果就是阻塞等待的線程隊列最大值。如果連接線程排滿了隊列就會拋出“Out of semaphores to get db”錯誤。
          socketKeepAlive:該標志用于控制socket保持活動的功能,通過防火墻保持連接活著
          socketKeepAlive=false
          autoConnectRetry:這個控制是否在一個Connection時,系統會自動重試
          #true:假如Connection不能建立時,驅動將重試相同的server,有最大的重試次數,默認為15次,這樣可以避免一些server因為一些阻塞操作零時down而驅動拋出異常,這個對平滑過度到一個新的master,也是很有用的,注意:當集群為復制集時,驅動將在這段時間里,嘗試鏈接到舊的master上,而不會馬上鏈接到新master上
          #false 當在進行socket讀寫時,不會阻止異常拋出,驅動已經有自動重建破壞鏈接和重試讀操作. 推薦配置false
          autoConnectRetry=false
          #重新打開鏈接到相同server的最大毫秒數,推薦配置為0,如果 autoConnectRetry=true,表示時間為15s
          #com.jd.mongodbclient2.mongo.JDClientMongo.maxAutoConnectRetryTime=false
          #表示當沒有手動關閉游標時,是否有一個自動釋放游標對象的方法,如果你總是很小心的關閉游標,則可以將其設為false 推薦配置true

          https://docs.mongodb.com/manual/reference/connection-string/#connections-connection-options
          ————————————————
          版權聲明:本文為CSDN博主「pursuer211」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
          原文鏈接:https://blog.csdn.net/pursuer211/article/details/82994027

          posted on 2020-03-07 20:58 paulwong 閱讀(1313) 評論(0)  編輯  收藏 所屬分類: MONGODB

          主站蜘蛛池模板: 江城| 冀州市| 长沙县| 洛宁县| 清丰县| 鞍山市| 五指山市| 稷山县| 淳安县| 沈丘县| 万宁市| 崇文区| 翼城县| 香港| 乐至县| 马关县| 西林县| 边坝县| 和顺县| 格尔木市| 峨边| 广安市| 姜堰市| 望都县| 陵水| 浠水县| 汪清县| 正宁县| 梁山县| 文山县| 喀喇沁旗| 通许县| 塔城市| 广昌县| 芦山县| 巴楚县| 日土县| 韩城市| 肇州县| 望奎县| 宜黄县|