【问题标题】:Mongo replset very slow connect from phpMongo replset 从 php 连接非常慢
【发布时间】:2015-01-29 16:07:24
【问题描述】:

我在连接副本集(4 db + 1 arbiter)时遇到问题。

基准测试:

<?php
echo "rp: nearest" . PHP_EOL;
$m = new MongoClient("mongodb://app1.n.prod,app1.m.prod,app2.m.prod,app1.d.prod/?replicaSet=booklet&readPreference=nearest&readPreferenceTags=dc:nsk");

echo "rp: primary" . PHP_EOL;
$m = new MongoClient("mongodb://app1.n.prod,app1.m.prod,app2.m.prod,app1.d.prod/?replicaSet=booklet&readPreference=primary");

echo "rp: secondary" . PHP_EOL;
$m = new MongoClient("mongodb://app1.n.prod,app1.m.prod,app2.m.prod,app1.d.prod/?replicaSet=booklet&readPreference=secondary");

echo "localhost, rs" . PHP_EOL;
$m = new MongoClient("mongodb://localhost/?replicaSet=booklet");

echo "rp: secondary, without rs" . PHP_EOL;
$m = new MongoClient("mongodb://app1.n.prod,app1.m.prod,app2.m.prod,app1.d.prod/?readPreference=secondary");

echo "localhost, without rs" . PHP_EOL;
$m = new MongoClient("mongodb://localhost");

结果(时间在 php microtime(true)):

rp: nearest
1422547256.97
1422547258.8778
rp: primary
1422547258.8778
1422547259.7998
rp: secondary
1422547259.7999
1422547260.7213
localhost, rs
1422547260.7213
1422547260.7223
rp: secondary, without rs
1422547260.7223
1422547261.4674
localhost, without rs
1422547261.4674
1422547261.4683

为什么连接到副本集需要这么长时间? (每个连接 1 秒)

【问题讨论】:

  • 如果您从MongoLog 提供一些额外的日志信息会很有帮助,因为它报告了用于建立与副本集的连接的内部驱动程序活动(以及许多其他事情)。默认情况下,它会发出 PHP 通知,但您可以通过 MongoLog::setCallback() 自定义日志记录。让您的回调在每条消息之前记录一个时间戳可以让我们计算每个事件之间的延迟。

标签: php mongodb database-replication replicaset


【解决方案1】:

尝试使用ip代替域名:

$m = new MongoClient("mongodb://10.10.0.100:27017,10.10.0.101:27017,10.10.0.102:27017/?replicaSet=booklet&readPreference=nearest&readPreferenceTags=dc:nsk");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-03
    • 2014-03-20
    • 2010-09-21
    • 1970-01-01
    • 2013-07-22
    • 2019-07-26
    • 1970-01-01
    • 2012-01-29
    相关资源
    最近更新 更多