如何判断MongoDB PHP驱动程序从哪个辅助服务器读取?
我使用传统的MongoDB驱动程序(1.6.x)连接到MongoDB(2.4.x)复制集。我的连接字符串中有“?readPreference=secondary”,复制集中有两个MongoDB secondary。我的连接字符串包括所有服务器:如何判断MongoDB PHP驱动程序从哪个辅助服务器读取?,php,mongodb,Php,Mongodb,我使用传统的MongoDB驱动程序(1.6.x)连接到MongoDB(2.4.x)复制集。我的连接字符串中有“?readPreference=secondary”,复制集中有两个MongoDB secondary。我的连接字符串包括所有服务器: mongodb://dev-mongo01:27017,dev-mongo02:27017,dev-mongo03:27017/?replicaSet=dev-mongo-replica&readPreference=secondary 我想找
mongodb://dev-mongo01:27017,dev-mongo02:27017,dev-mongo03:27017/?replicaSet=dev-mongo-replica&readPreference=secondary
我想找出读取来自哪个辅助服务器,以验证readPreference是否按预期工作,并计算辅助服务器的复制延迟。我尝试从管理数据库中查看MongoClient->getConnections()、MongoClient->getHosts()、“serversatus”和“replSetGetStatus”,但找不到任何信息来告诉我哪个辅助服务器提供了数据。如果只是为了验证代码是否读取了正确的服务器,那么mongodb.log是正确的查找位置。您将看到谁正在连接到节点及其IP地址 此外,您还可以启用“按集分析”:
db.setProfilingLevel(2);
记录来自客户端的所有操作。要小心,因为这样会大大降低性能。通过以下方式将其关闭:
db.setProfilingLevel(0);
如果您正在寻找一种方法来控制哪个辅助服务器应该为特定请求提供服务,这就是您要寻找的。如果只是为了验证您的代码是否读取了正确的服务器,那么mongodb.log就是您要寻找的正确位置。您将看到谁正在连接到节点及其IP地址 此外,您还可以启用“按集分析”:
db.setProfilingLevel(2);
记录来自客户端的所有操作。要小心,因为这样会大大降低性能。通过以下方式将其关闭:
db.setProfilingLevel(0);
如果您正在寻找一种方法来控制哪个辅助服务器应该为特定请求提供服务,这就是您要寻找的。您可以在迭代/读取光标后调用
$cursor->info()
,以获得包含主机
、端口
和连接类型描述
键的数据结构。主机和端口键指定哪个MongoDB服务器满足特定查询
$cursor = $this->mongoclient->selectDB("test")->selectCollection("test")->find();
$cursor->rewind();
print_r($cursor->info()); //MongoDB Cursor Info
请参见在对光标进行迭代/读取后,您可以调用
$cursor->info()
,以获取包含主机
、端口
和连接类型描述
键的数据结构。主机和端口键指定哪个MongoDB服务器满足特定查询
$cursor = $this->mongoclient->selectDB("test")->selectCollection("test")->find();
$cursor->rewind();
print_r($cursor->info()); //MongoDB Cursor Info
看