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

Экземпляр Amazon AWS для запуска MongoDB?

Какой способ запуска MongoDB в AWS наиболее оптимизирован? Я получаю несколько тестов медленного ввода-вывода диска (что, как я понимаю, является нормой для EC2). Лучше всего использовать большой экземпляр ec2? есть ли способ улучшить чтение диска?

MongoDB работает лучше всего, если вся база данных может уместиться в памяти, поэтому может быть рассмотрен экземпляр с высокой памятью, особенно если ваше приложение требует много чтения (хорошие индексы также помогут).

MongoDB использует файлы с отображением памяти, поэтому он довольно эффективно определяет, что хранит в памяти и что записывает на диск. Индексы имеют приоритетность и всегда должны находиться в памяти (если индексы не помещаются в памяти, это может сказаться на производительности).

Как правило, вы должны попытаться свести к минимуму индексы в приложениях с большим объемом записи (поскольку каждая запись требует дополнительной записи для индекса). Приложения с интенсивным чтением должны использовать индексы для всех полей, к которым обычно обращаются.

Во-вторых, различные классы экземпляров имеют разную производительность ввода-вывода - большой класс экземпляра имеет высокую производительность ввода-вывода.

Наконец, вы можете улучшить производительность чтения / записи ваших томов EBS, настроив их как RAID. Это довольно легко сделать, используя mdadm.

Вы можете проверить доступ к диску, используя iostat (посмотрите, сколько операций чтения / записи происходит на диске). Со стороны MongoDB используйте db.serverStatus() в оболочке mongo, чтобы получить соответствующие данные (например, mem раздел описывает использование памяти, а backgroundFlushing описывает запись на диск.

Для небольшой базы данных с интенсивным чтением, расположенной на том же компьютере, что и приложение, запрашивающее ее, все размеры экземпляров (за исключением, возможно, t1.micro), которые поместятся в нее в памяти, должны быть по существу эквивалентными (поскольку требуемый ввод-вывод минимален). Для приложений с большим объемом записи ввод-вывод становится гораздо более важным фактором.