mongodb1.3版本以上都通過mongoclient類進行連線,其策略預設就是長連線,而且無法修改。所以連線數其實取決於fpm的客戶程序數。如果fpm量太大,必然會導致連線數過多的問題。如果你所有機器上一共有1000個fpm,那麼就會建立1000個長連線,按mongodb服務端的策略,每個連線最低消耗1m記憶體,那這1g記憶體就沒了。所以直接方案是每次使用完後進行close操作,這樣不會讓服務端需要保持大量的連線。而close函式也有乙個坑,就是預設只關閉寫連線(比如master或者replica sets的primary),如果要關閉全部連線,需要新增引數true即:$mongo->close(true)每次關閉連線的方案可以有效減少伺服器的併發連線數,除非你的操作本身非常慢。但是同樣也有它的問題,比如每次不能復用之前的tcp連線,需要重新進行連線,這樣連線耗時會比較高,特別是用replica sets的時候,需要建立多個tcp連線。所以最終可能只有兩個方案一是減小fpm的數量二是自建連線池,通過連線池將之個客戶端的連線收斂成固定數量對mongodb的連線。
php那邊是推薦用的persistent connection, 而且也說了db 那邊那種不推薦使用pconnect 但對於mongo 不適用, mongo 是strongly recommend 使用persistent connection.
[url]
[url] 長連線 短連線
長連線和短連線
短連線是指通訊雙方有資料互動時,就建立乙個tcp連線,資料傳送完成後,則斷開此tcp連線,一般銀行都使用短連線。比如http的,只是連線 請求 關閉,過程時間較短,伺服器若是一段時間內沒有收到請求即可關閉連線。其實長連線是相對於通常的短連線而說的,也就是長時間保持客戶端與服務端的連線狀態。通常的短連...
長連線和短連線
tcp ip tcp ip是個協議組,可分為三個層次 網路層 傳輸層和應用層。在網路層有ip協議 icmp協議 arp協議 rarp協議和bootp協議。在傳輸層中有tcp協議與udp協議。在應用層有 通過tcp協議來通訊的應用層協議包括ftp http telnet smtp等 通過udp協議來通...
長連線和短連線
長連線是建立socket之後,一直不關閉該socket,一般是tcp協議,我們知道tcp是雙工的,能夠保證cs兩端可以互發資料。短連線建立socket之後,做一次很短的互動 只發不收,或者發了就收 之後,就關閉該socket,一般都是基於http 在tcp之上 tcp ip是傳輸層協議,主要解決資料...