程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> mongodb replica set connection timeout

mongodb replica set connection timeout

編輯:PHP基礎知識
 

如果只是搭建一個mongodb replica set, 比如1主2從+1裁決, 不使用mongos和configsrv或者mongoproxy, 那麼在PHP中連接mongodb的時候, 需要在options中顯式指定 replicaSet,除以此外, 還有一點讓人非常頭痛:
host怎樣寫?
把這四台機器都寫上? 還是只寫一台主服務器?或者寫1主2從?或者怎樣?

事實上,無論你寫幾台機器上去,mongo client都會連接到replica set中並從rs的配置裡面獲取到rs所有服務器的信息,並且嘗試連接全部的服務器……

下面就從各種可能的場景來分析一下利弊:
1) 只寫一台(無論主從)。
無論如何是不可取的。。如果這台機器掛掉,那mongo client還咋連接服務器啊??

2) 全寫或者寫一部分。
仍然無法逃避某些機器掛掉的情況。
而且某些版本的mongo.so對於已經掛掉的服務器還會嘗試連接(用戶名密碼不為空的情況下)。
所以最好不要使用auth認證了。
同時一定要設置連接超時時間為xxx毫秒。
不過,萬一某個機房都掛了。。。每台機器超時xxx毫秒,也夠受的。
php可以使用 connectTimeoutMS與socketTimeoutMS的options。 貌似直接設置 default_socket_timeout沒有什麼效果。

貌似socketTimeoutMs會重試5次。。不知道在哪裡配置的。

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved