start replicar replica mongod mongo initiate example create mongodb database-connection

mongodb - replicar - mongo php réplica de conexión muy lenta



replicar mongodb (1)

No veo ninguna información de hardware en su pregunta y en términos de rendimiento en mi Q&A de Mongo asistente y hablando con los ingenieros que trabajan para mongo. Entiendo que verificar y elegir el hardware correcto y la ubicación física del hardware es un factor importante para acelerar las cosas.

1) ¿Están las réplicas en el mismo centro de datos? E incluso si están en el mismo centro de datos, la comunicación entre los servidores es rápida en términos de medir el tiempo para hacer ping y verificar el trazado de ruta entre cada una de las réplicas (es decir, 1 a 2, 1 a 3, 2 a 3). se pasan muchas transacciones entre las réplicas para mantenerse actualizados y si se encuentran en diferentes centros de datos, eso podría ser un factor. Por lo tanto, un tipo de solución sería garantizar que las réplicas estén lo suficientemente cerca y, a veces, incluso en el mismo centro de datos. Aunque hay algo que decir acerca de tener réplicas en diferentes centros de datos para la tolerancia de partición. 2) el ram y la cpu del hardware hacen la diferencia, tal vez aumentarlos también marcaría la diferencia, ya que el uso de unidades SSD acelera las cosas en general.

Además, y como nota al margen, un tipo de "solución alternativa" al problema que está viendo es agrupar las conexiones a mongodb para que las conexiones estén disponibles, pero me doy cuenta de que no es lo que está preguntando, está preguntando por la conexión. ¡Sí y por qué es lento!

Esto se conecta sin demora:

$connection = new MongoClient("mongodb://localhost:27017", array("replicaSet" => REPLICASET,''username''=>USER, ''password''=>PASSWORD, ''db''=>DATABASE));

Sin embargo, esto toma hasta 10 segundos cuando agrego todos los hosts del conjunto de réplicas. Driver PHP (1.6.7)

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

En el registro el retraso parece estar en cada conexión. Aquí hay un extracto del registro:

[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

Cuando ssh en el servidor primario e intente conectar desde el terminal también es rápido.

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

¿Por qué PHP tarda tanto en conectarse?

Actualización del 20 de julio:

He actualizado mongo en mi servidor primario a 2.6.10, pero todavía demora 5 segundos para que se cargue mi página de prueba. Así es como estoy intentando conectar:

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() . "]"); }

Cualquier ayuda sería apreciada.