Какой способ запуска MongoDB в AWS наиболее оптимизирован? Я получаю несколько тестов медленного ввода-вывода диска (что, как я понимаю, является нормой для EC2). Лучше всего использовать большой экземпляр ec2? есть ли способ улучшить чтение диска?
MongoDB работает лучше всего, если вся база данных может уместиться в памяти, поэтому может быть рассмотрен экземпляр с высокой памятью, особенно если ваше приложение требует много чтения (хорошие индексы также помогут).
MongoDB использует файлы с отображением памяти, поэтому он довольно эффективно определяет, что хранит в памяти и что записывает на диск. Индексы имеют приоритетность и всегда должны находиться в памяти (если индексы не помещаются в памяти, это может сказаться на производительности).
Как правило, вы должны попытаться свести к минимуму индексы в приложениях с большим объемом записи (поскольку каждая запись требует дополнительной записи для индекса). Приложения с интенсивным чтением должны использовать индексы для всех полей, к которым обычно обращаются.
Во-вторых, различные классы экземпляров имеют разную производительность ввода-вывода - большой класс экземпляра имеет высокую производительность ввода-вывода.
Наконец, вы можете улучшить производительность чтения / записи ваших томов EBS, настроив их как RAID. Это довольно легко сделать, используя mdadm
.
Вы можете проверить доступ к диску, используя iostat
(посмотрите, сколько операций чтения / записи происходит на диске). Со стороны MongoDB используйте db.serverStatus()
в оболочке mongo, чтобы получить соответствующие данные (например, mem
раздел описывает использование памяти, а backgroundFlushing
описывает запись на диск.
Для небольшой базы данных с интенсивным чтением, расположенной на том же компьютере, что и приложение, запрашивающее ее, все размеры экземпляров (за исключением, возможно, t1.micro), которые поместятся в нее в памяти, должны быть по существу эквивалентными (поскольку требуемый ввод-вывод минимален). Для приложений с большим объемом записи ввод-вывод становится гораздо более важным фактором.