首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >mongo php副本连接非常慢

mongo php副本连接非常慢
EN

Stack Overflow用户
提问于 2015-06-22 10:21:09
回答 1查看 1.6K关注 0票数 18

这是没有延迟的连接:

代码语言:javascript
复制
$connection = new MongoClient("mongodb://localhost:27017", array("replicaSet" => REPLICASET,'username'=>USER, 'password'=>PASSWORD, 'db'=>DATABASE));

然而,当我从副本集中添加所有主机时,这需要10秒的时间。PHP驱动程序(1.6.7)

代码语言:javascript
复制
$connection = new MongoClient("mongodb://".HOST_1.":27017,".HOST_2.":27017,".HOST_3.":27018", array("replicaSet" => REPLICASET,'username'=>USER, 'password'=>PASSWORD, 'db'=>DATABASE));

在日志中,延迟似乎出现在每个连接上。以下是日志的摘录:

代码语言:javascript
复制
[22-Jun-2015 12:04:41 Australia/ACT] PHP Notice:  CON     FINE: Connecting to tcp://ec2-XX-XXX-XXX-XXX.ap-southeast-2.compute.amazonaws.com:27017 (ec2-XX-XXX-XXX-XXX.ap-southeast-2.compute.amazonaws.com:27017;launch;launch/launch/55a850dad20e018890350ece678dc293;15873) with connection timeout: 60.000000 in /home/user/public_html/test.php on line 52
[22-Jun-2015 12:04:47 Australia/ACT] PHP Notice:  CON     INFO: stream_connect: Not establishing SSL for ec2-XX-XXX-XXX-XXX.ap-southeast-2.compute.amazonaws.com:27017 in /home/user/public_html/test.php on line 52

当我通过ssh进入主服务器并尝试从终端连接时,速度也很快。

代码语言:javascript
复制
mongo --host "launch/host:27017,ec2-XX-XXX-XXX-XXX.ap-southeast-2.compute.amazonaws.com:27017,host2:27018" --authenticationDatabase launch -u USERNAME -p PASSWORD

为什么PHP需要这么长时间才能连接?

7月20日更新:

我已经在我的主服务器上将mongo更新到了2.6.10,但仍然需要5秒才能加载我的测试页面。这就是我尝试连接的方式:

代码语言:javascript
复制
error_reporting(E_ALL);
MongoLog::setLevel(MongoLog::ALL);
MongoLog::setModule(MongoLog::ALL);

try {
    $connection = new MongoClient("mongodb://host1:27017,ec2host1:27017,ec2arbiterhost:27017", array("replicaSet" => "setname",'username'=>USER, 'password'=>PASSWORD, 'db'=>DATABASE));

    echo 'connected';

} catch (MongoConnectionException $e) {
  die("Unable to connect to database [code: " . $e->getCode() . "]");
}

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-24 00:22:34

我在你的问题中没有看到任何硬件信息,在我参加mongo问答和与mongo的工程师交谈时,我理解检查和选择正确的硬件和硬件的物理位置是加快速度的一个重要因素。

1)副本是否在同一个数据中心?即使它们位于同一个数据中心,在测量每个副本之间的ping和traceroute检查的时间(即1到2、1到3、2到3)方面,服务器之间的通信也很快。在副本之间传递大量事务以保持自身最新,如果它们位于不同的数据中心,这可能是一个因素。因此,一种解决方案是确保副本足够近,有时甚至在同一数据中心。虽然在不同的数据中心中拥有副本以实现分区容错是有道理的。2)硬件的ram和cpu会有所不同,也许增加它们也会有所不同,使用SSD驱动器通常会加快速度。

另外,顺便说一句,您看到的问题的一种“变通办法”是汇集到mongodb的连接,以便连接随时可用,但我意识到这不是您要问的问题,您是在问连接本身以及为什么它很慢!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30971325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档