-
-
Save leozc/6126556 to your computer and use it in GitHub Desktop.
| <? | |
| // simple mongoclient dumpper | |
| $a=getMongo(); | |
| $b=getMongo(); | |
| var_dump($a->getConnectionss()); | |
| print("===================================SECOND MONGO CONN REQUEST ===================================\n"); | |
| var_dump($b->getConnectionss()); | |
| function getMongo(){//{{{ | |
| $mongo = new MongoClient(MG_HOST, array( | |
| 'replicaSet' => MG_REPLICASET, | |
| 'password'=>MG_PWD, | |
| 'username'=>MG_USER, | |
| 'db'=>MG_DB, | |
| 'journal' => true, | |
| "readPreference"=> MongoClient::RP_SECONDARY_PREFERRED | |
| ) | |
| ); | |
| $mgdb = $mongo->{MG_DB}; | |
| return $mongo; | |
| } | |
| ?> |
Output:
array(2) {
[0]=>
array(3) {
["hash"]=>
string(129) "xxx"
["server"]=>
array(7) {
["host"]=>
string(30) "xx"
["port"]=>
int(10044)
["repl_set_name"]=>
string(28) "xx"
["database"]=>
string(16) "mixerbox_new_ssd"
["username"]=>
string(7) "xx"
["auth_hash"]=>
string(32) "xx"
["pid"]=>
int(32492)
}
["connection"]=>
array(8) {
["last_ping"]=>
int(1375308556)
["last_ismaster"]=>
int(1375308557)
["ping_ms"]=>
int(1)
["connection_type"]=>
int(2)
["connection_type_desc"]=>
string(7) "PRIMARY"
["max_bson_size"]=>
int(16777216)
["tag_count"]=>
int(0)
["tags"]=>
array(0) {
}
}
}
[1]=>
array(3) {
["hash"]=>
string(129) "xx"
["server"]=>
array(7) {
["host"]=>
string(30) "xx"
["port"]=>
int(10044)
["repl_set_name"]=>
string(28) "xx"
["database"]=>
string(16) "xx"
["username"]=>
string(7) "xx"
["auth_hash"]=>
string(32) "xx"
["pid"]=>
int(32492)
}
["connection"]=>
array(8) {
["last_ping"]=>
int(1375308556)
["last_ismaster"]=>
int(1375308557)
["ping_ms"]=>
int(3)
["connection_type"]=>
int(4)
["connection_type_desc"]=>
string(9) "SECONDARY"
["max_bson_size"]=>
int(16777216)
["tag_count"]=>
int(0)
["tags"]=>
array(0) {
}
}
}
}
===================================SECOND MONGO CONN REQUEST ===================================
array(2) {
[0]=>
array(3) {
["hash"]=>
string(129) "xx"
["server"]=>
array(7) {
["host"]=>
string(30) "xx"
["port"]=>
int(10044)
["repl_set_name"]=>
string(28) "xx"
["database"]=>
string(16) "xx"
["username"]=>
string(7) "ilivapp"
["auth_hash"]=>
string(32) "xx"
["pid"]=>
int(32492)
}
["connection"]=>
array(8) {
["last_ping"]=>
int(1375308556)
["last_ismaster"]=>
int(1375308557)
["ping_ms"]=>
int(1)
["connection_type"]=>
int(2)
["connection_type_desc"]=>
string(7) "PRIMARY"
["max_bson_size"]=>
int(16777216)
["tag_count"]=>
int(0)
["tags"]=>
array(0) {
}
}
}
[1]=>
array(3) {
["hash"]=>
string(129) "xxx"
["server"]=>
array(7) {
["host"]=>
string(30) "xx"
["port"]=>
int(10044)
["repl_set_name"]=>
string(28) "set-xx"
["database"]=>
string(16) "xx"
["username"]=>
string(7) "xx"
["auth_hash"]=>
string(32) "xx"
["pid"]=>
int(32492)
}
["connection"]=>
array(8) {
["last_ping"]=>
int(1375308556)
["last_ismaster"]=>
int(1375308557)
["ping_ms"]=>
int(3)
["connection_type"]=>
int(4)
["connection_type_desc"]=>
string(9) "SECONDARY"
["max_bson_size"]=>
int(16777216)
["tag_count"]=>
int(0)
["tags"]=>
array(0) {
}
}
}
}
Each connection has Two Servers, 1 to Primary and 1 To Secondary.
ALl connections have ["pid"]=> int(32492) ( I guess it is process Id)
It seems, alone with 2 connections (one to primary and one to secondary), there are TWO topology connections built, one for primary and one to secondary) - seems additional overheads for me.
Particularly this worries me:
WARN: discover_topology: ismaster worked, but we need to remove the seed host's connection ....
[31-Jul-2013 22:32:07 UTC] PHP Notice: CON INFO: ismaster: last ran at 1375309927 in /var/app/current/testmongo.php on line 47
[31-Jul-2013 22:32:07 UTC] PHP Notice: CON WARN: discover_topology: ismaster worked, but we need to remove the seed host's connection in /var/app/current/testmongo.php on line 47
[31-Jul-2013 22:32:07 UTC] PHP Notice: CON FINE: mongo_connection_destroy: Destroying connection object for
[31-Jul-2013 22:32:07 UTC] PHP Notice: CON FINE: mongo_connection_destroy: Closing socket for
[31-Jul-2013 22:32:07 UTC] PHP Notice: CON FINE: discover_topology: ismaster worked in /var/app/current/testmongo.php on line 47
@leozc: Please format the var_dump output with monospace formatting (three ` characters on a line before and after will do it). It's a bit hard to read in the current state.
Re:jmlkola.
@leozc: The error you're seeing is because the connection string hostname doesn't match what the servers themselves identify as. Take a look at mongo_connection_ismaster and look for the retval = 3 case.
Very nice hint! It ends up it is a domain name alias problem, let me investigate further...
Take a look at mongo_connection_ismaster and look for the retval = 3 case. helps
When test under ngnix (1 worker).
TCP socket level is persistent:
tcp 0 0 ip-10-114-149-254.ec2:37426 unknown.servercentral:10044 ESTABLISHED 31867/php-fpm
tcp 0 0 ip-10-114-149-254.ec2:56806 ge0-41.mongo101.iad1.:10044 ESTABLISHED 31867/php-fpm
but sent 4 auth cmd to mongo (3 master 2 secondary)