Назад | Перейти на главную страницу

Удаленный сервер MongoDB или локальный?

Я использую 1GB Linode (VPS) с MongoDB + Apache.

MongoDB содержит более 1,5 млн записей. Множественные экземпляры скрипта, от которых полностью зависит сервис, вызывают 50+ активных соединений и около 50 запросов в секунду.

Мой free -m вывод

             total       used       free     shared    buffers     cached
Mem:           995        974         21          0          4        823
-/+ buffers/cache:        145        849
Swap:          511         79        432

Теперь скрипту требуется ~ 17 МБ для каждого экземпляра (уже оптимизированного), и, как я уже сказал, запускается несколько экземпляров. Огромная разница между свободной кеш-памятью (849 МБ!) И фактической (21 МБ). Я не могу запускать экземпляры PHP-скрипта, я получаю сообщение об ошибке выделения памяти.

Большая часть памяти используется MongoDB, что также приводит к высокой загрузке ЦП, 250+ %. Это бесполезно, я мог бы запустить даже много экземпляров своего PHP-скрипта в пределах 849 МБ. Я хочу знать, будет ли мне лучше разместить мою MongoDB удаленно (я предпочитаю MongoHQ). У них есть план в 15 долларов в месяц, что для меня справедливо. Я мог бы понизить версию линода до 768 МБ, чего будет достаточно без работы на нем MonogDB.

Но каковы недостатки использования удаленно размещенной базы данных? 50+ подключений и ~ 50 запросов в секунду? Далее будут проблемы с пропускной способностью.

Любая помощь приветствуется.

Если вы собираетесь запускать базу данных удаленно, запустите ее в том же сегменте сети, что и серверы приложений, или, по крайней мере, в том же центре обработки данных.

Даже если у вас низкая задержка (например, <10 мс), это может повлиять на ваши запросы в зависимости от типа загружаемых данных.
Кроме того, вы завершаете добавление еще одной точки отказа в вашу систему, связь между серверами приложений и серверами баз данных может нарушиться. MongoDB не использует какое-либо шифрование в своем протоколе, и ваши данные будут очищены между бог знает сколько прыжков, если вы каким-то образом не туннелируете их. И, как вы указали, есть использование полосы пропускания. В целом, я предлагаю вам получить другой узел для запуска вашей БД, но на том же месте, что и ваш сервер приложений.