【问题标题】:Connect to remote mongodb using Unix Domain Socket使用 Unix 域套接字连接到远程 mongodb
【发布时间】:2015-09-10 10:36:49
【问题描述】:

我在 php 中使用 Mongoclient 的 PECL 扩展,它允许我连接到 compose.io 上的 MongoDB。

我正在使用标准连接到远程服务器:

new MongoClient('mongodb://username:password@candidate.6.mongolayer.com:10554,candidate.5.mongolayer.com:10690/database?replicaSet=set-xxxxxxxx');

但是,我在网上了解到,连接到 Unix 域套接字可以将性能提升高达 100 倍。目前,与 compose.io 的连接大约需要 1.2 秒,相当长。

如何设置 Unix 域套接字以连接到远程 MongoDB 服务器?

【问题讨论】:

  • 看到这里的操作词是“unix domain”和“remote”,它们都是互斥的。 “unix 域”表示仅在“同一”主机上的连接。 “远程”意味着“网络”,因此意味着 TCP 套接字。所以基本上只是要求不可能。除非您有另一个将 unix 套接字“代理”到 TCP 套接字的服务。但是这样就解决了问题。

标签: php mongodb unix


【解决方案1】:
$mongoDns = sprintf('mongodb://%s:%s@%s:%s/%s', $user_name, $password, $db_server, $db_port, $db_name);
$options = array('connectTimeoutMS' =>5000 , 'socketTimeoutMS' => 120000);
$conection = new MongoClient($mongoDns,$options);

【讨论】:

  • 不,这不能解决用户的问题。它与 OP 发布的代码完全相同
  • 否,但也许这会加快连接速度?
  • @PatrickSteenks 你似乎不明白我之前留下的评论。无法通过 unix 域套接字连接到另一台主机。它们只存在于同一台机器上并且可见,因此只有运行数据库的同一台机器才是客户端需要的位置。这就是为什么任何答案都是愚蠢的主要原因。
  • 我确实理解你的回答,但认为这里提到的额外参数会加快连接速度。
猜你喜欢
  • 2019-02-28
  • 2011-12-27
  • 2016-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-02
  • 2017-02-06
相关资源
最近更新 更多