我正在使用 pecl mongo 1.4.x 驱动程序(http://pecl.php.net/package/mongo/1.4.1),标题中提到的设置用于中等流量服务(每分钟 5K - 10K 请求)。
而且我发现,在 mongoDB 中,Auth 命令占用了大量流量,并且连接请求速率约为每秒 30-50 个。
这会严重影响性能(锁定率上升,内存管理不好)
如果我在一个盒子里做 netstat(我总共有 5-8 个盒子),我会看到每个盒子总共有 2-3K 个 mongo 连接(有些在 WAIT 中,有些在 ESTABLISHED 中)。
我的问题是如何减少与 mongoDB 的连接数,如何正确设置持久连接?
似乎 PECL mongoDB 驱动程序中持久连接的工作方式自 1.2 和 1.3 以来一直在发生变化,并且在 1.4 中的执行方式略有不同。
这是我使用驱动程序调用客户端的方式:
$mongo = new MongoClient(
"host1:11004,host2:11004", array(
'replicaSet' => MG_REPLICASET,
'password'=>"superpasswd",
'username'= >"myuser",
'db'=>"mydb",
'journal' => true,
"readPreference"=> MongoClient::RP_SECONDARY_PREFERRED
) );