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 閱讀(1323) 評論(0)  編輯  收藏 所屬分類: MONGODB

          主站蜘蛛池模板: 怀宁县| 六盘水市| 益阳市| 马尔康县| 喀什市| 古蔺县| 辽阳县| 张掖市| 寿宁县| 冕宁县| 礼泉县| 邵阳县| 丹阳市| 乐平市| 于都县| 渑池县| 宾阳县| 城固县| 合山市| 琼结县| 九寨沟县| 雷州市| 兴国县| 静海县| 迁西县| 普定县| 洪雅县| 双柏县| 佳木斯市| 南溪县| 香港 | 即墨市| 通榆县| 读书| 青田县| 宝鸡市| 瑞昌市| 青川县| 西贡区| 明星| 石家庄市|