佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > MongoDB的PHP驅(qū)動(dòng)方法與技巧

MongoDB的PHP驅(qū)動(dòng)方法與技巧

熱門標(biāo)簽:網(wǎng)站排名優(yōu)化 AI電銷 百度競(jìng)價(jià)排名 服務(wù)外包 鐵路電話系統(tǒng) 呼叫中心市場(chǎng)需求 Linux服務(wù)器 地方門戶網(wǎng)站

創(chuàng)建索引有時(shí)會(huì)阻塞新的連接

當(dāng)與mongodb復(fù)制集建立連接時(shí),驅(qū)動(dòng)程序首先嘗試連接并驗(yàn)證集群中每個(gè)非 隱藏的節(jié)點(diǎn)。如果一個(gè)節(jié)點(diǎn)是“down”狀態(tài),將跳過(guò)。然而,如果一個(gè)節(jié)點(diǎn)是“UP”狀態(tài),但是持有寫鎖,那么驗(yàn)證將沒(méi)法執(zhí)行下去,因此該驅(qū)動(dòng)程序?qū)⒈粧炱鹆恕?/p>

在mongodb 2.6版本前,在建立索引時(shí)的通病。所有的在前臺(tái)或后臺(tái)創(chuàng)建索引,在secondary端將在前臺(tái)創(chuàng)建。

在PHP驅(qū)動(dòng)程序的1.5.3版本會(huì)有所改進(jìn),在創(chuàng)建索引時(shí),允許驗(yàn)證到second節(jié)點(diǎn)驗(yàn)證。

減少is_master_interval值

對(duì)于對(duì)可用性要求高的應(yīng)用程序來(lái)說(shuō),建議檢查默認(rèn)的驅(qū)動(dòng)程序運(yùn)行時(shí)的配置設(shè)置。

mongo.is_master_interval選項(xiàng)控制著在復(fù)制集重新選舉時(shí)驅(qū)動(dòng)如何快速恢復(fù)。

is_master_interval選項(xiàng)默認(rèn)值為15s,設(shè)置驅(qū)動(dòng)發(fā)送“isMaster”請(qǐng)求每個(gè)mongod實(shí)例的時(shí)間間隔。這些請(qǐng)求幫助驅(qū)動(dòng)程序判斷復(fù)制集的拓?fù)浣Y(jié)構(gòu),具體的來(lái)說(shuō),就是請(qǐng)求檢測(cè)哪個(gè)節(jié)點(diǎn)是primary并可以接收寫操作。

建議將該值設(shè)置為1或2秒,以讓驅(qū)動(dòng)程序在集群選舉或故障轉(zhuǎn)移時(shí),能夠迅速的定位到primary節(jié)點(diǎn)。當(dāng)然啦,這也取決于有多少客戶端以及ping的頻率。

注意,當(dāng)primary節(jié)點(diǎn)發(fā)生變化時(shí),如選舉或故障轉(zhuǎn)移,總是會(huì)有幾秒鐘驅(qū)動(dòng)程序會(huì)收到一個(gè)“MongoConnectionException” 信息 “No candidate servers found”。這些異常需要在你的代碼中進(jìn)行處理,否則會(huì)終止應(yīng)用程序。

理解連接處理方式并配置連接TimeoutMS

PHP驅(qū)動(dòng)程序不使用連接池。因此,建議你每個(gè)PHP進(jìn)程創(chuàng)建一個(gè)連接。但是,如果web應(yīng)用程序有許多PHP工作進(jìn)程,將會(huì)創(chuàng)建很多新的數(shù)據(jù)庫(kù)連接,PHP驅(qū)動(dòng)程序不能共享進(jìn)程之間的連接。因此,當(dāng)網(wǎng)絡(luò)節(jié)點(diǎn)慢,服務(wù)器繁忙時(shí),PHP應(yīng)用程序創(chuàng)建初始數(shù)據(jù)庫(kù)連接時(shí)特別容易受到阻礙。

在這種情況下,建議你自定義 connectionTimeoutMS 選項(xiàng)和注意php.ini中的mongo.ping_interval選項(xiàng)。

connectionTimeoutMS

PHP驅(qū)動(dòng)程序不顯示的定義一個(gè)默認(rèn)的連接超時(shí)。相反,默認(rèn)值由php.ini文件中的default_socket_timeout選項(xiàng)決定,默認(rèn)是60秒。連接將等待60秒斷開(kāi),時(shí)間有些長(zhǎng),需要降低些。

強(qiáng)烈建議通過(guò)連接字符串的URI選項(xiàng)中顯示設(shè)置connectionTimeoutMS選項(xiàng)。將其設(shè)置為5到30秒之間的值。

mongo.ping_interval

mongo.ping_interval默認(rèn)值為5秒。該選項(xiàng)設(shè)置驅(qū)動(dòng)程序發(fā)送ping請(qǐng)求到每個(gè)mongod實(shí)例發(fā)現(xiàn)“down”節(jié)點(diǎn)的時(shí)間間隔,用于跟蹤驅(qū)動(dòng)程序的服務(wù)器黑名單。告訴驅(qū)動(dòng)程序哪些節(jié)點(diǎn)忽略。

您可能感興趣的文章:
  • PHP7之Mongodb API使用詳解
  • Ubuntu下安裝PHP的mongodb擴(kuò)展操作命令
  • php操作MongoDB類實(shí)例
  • php實(shí)現(xiàn)Mongodb自定義方式生成自增ID的方法
  • php操作mongoDB實(shí)例分析
  • PHP中的mongodb group操作實(shí)例
  • Linux安裝PHP MongoDB驅(qū)動(dòng)

標(biāo)簽:湘潭 蘭州 銅川 黃山 仙桃 崇左 衡水 湖南

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MongoDB的PHP驅(qū)動(dòng)方法與技巧》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    海宁市| 垫江县| 永靖县| 江都市| 雅安市| 广汉市| 烟台市| 沂水县| 荆州市| 永清县| 夹江县| 饶阳县| 信宜市| 深水埗区| 长岛县| 丁青县| 宣武区| 美姑县| 泾源县| 长子县| 荆州市| 吴川市| 仁化县| 中卫市| 元谋县| 临高县| 岑巩县| 志丹县| 紫金县| 淮南市| 阿拉善盟| 延寿县| 葫芦岛市| 孝义市| 荃湾区| 汝城县| 保德县| 博白县| 固原市| 博野县| 盖州市|