Подтвердить что ты не робот

Mongo php replica соединение очень медленное

Это соединение без задержки:

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

Однако это занимает до 10 секунд, когда я добавляю все хосты из набора реплик. Драйвер 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));

В журнале задержка, по-видимому, находится в каждом соединении. Вот выдержка из журнала:

[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

Когда я ssh на основной сервер и попробую подключиться к терминалу, это также быстро.

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

Почему PHP так долго подключается?


20 июля Обновление:

Я обновил mongo на моем основном сервере до 2,6.10, но на загрузку моей тестовой страницы все равно занимает 5 секунд. Вот как я пытаюсь подключиться:

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

Любая помощь будет оценена.

4b9b3361

Ответ 1

Я не вижу никакой информации об оборудовании в вашем вопросе и с точки зрения производительности в моем посещающем монго Q & A и разговоре с инженерами, работающими на монго, я понимаю, что проверка и выбор правильного аппаратного и физического расположения аппаратного обеспечения является большим фактором в ускорении.

1) Являются ли реплики в одном центре данных? И даже если они находятся в одном и том же центре данных, это связь между серверами с точки зрения измерения времени для пинга и проверки трассировки между каждой из реплик (то есть от 1 до 2, от 1 до 3, от 2 до 3)  есть много транзакций, проходящих между репликами, чтобы поддерживать себя в актуальном состоянии, и если они находятся в разных центрах обработки данных, которые могут быть фактором. Таким образом, тип решения будет заключаться в обеспечении того, чтобы реплики были достаточно близки, а иногда даже в одном и том же центре данных. Хотя есть кое-что, что можно сказать, для того, чтобы иметь реплику в разных датацентрах для толерантности раздела. 2) RAM и процессор аппаратного обеспечения делают разницу, возможно, увеличивая их, и это будет иметь значение, а использование SSD-накопителей ускоряет работу в целом.

Кроме того, в качестве дополнительной заметки тип "обходного пути" к проблеме, которую вы видите, - это объединение соединений с mongodb, чтобы соединения были легко доступны, но я понимаю, что вы не просите, вы спрашиваете о самой связи и почему она медленная!