MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

XFS срещу EXT4 – Сравняване на производителността на MongoDB на AWS EC2

AWS е изключително популярна и надеждна облачна платформа за управление на внедряването на MongoDB, но въпросът за XFS срещу EXT4 кара много разработчици да се чудят коя файлова система на Linux ще им даде най-добрата производителност за техните приложения. Официалното ръководство на MongoDB за внедряване в производство препоръчва използването на файловата система XFS на Linux, особено при внедряване на машината за съхранение на WiredTiger. Препоръката обаче не ни казва защо трябва да очакваме повишаване на производителността или какъв вид печалби в производителността ще изпитаме. Решихме да стигнем до дъното, като проучим количествено производителността на MongoDB на XFS, за да можете да сравните дали EXT4 е по-добър избор за вашите AWS EC2 екземпляри.

Файлова система XFS

XFS е силно мащабируема, високопроизводителна 64-битова файлова система, разработена в SGI през 1993 г. и пренесена в Linux през 2002 г. Тя поддържа силно паралелен вход/изход и размери на файловата система до 9 Exabytes и записва само метаданните на файловата система, не потребителските данни. Някои ключови функции за подобряване на производителността на XFS са:

    • Паралелизираният достъп чрез групи за разпределение гарантира, че множество нишки могат да извършват I/O едновременно на един и същ том.
    • Разпределението на базата на степен намалява фрагментацията, размера на метаданните и подобрява I/O производителността, като позволява по-малко и по-големи I/O операции.
    • Отложеното разпределение подобрява непрекъснатостта и производителността на данните. Фрагментацията се намалява чрез комбиниране на записи и разпределяне на екстенти в големи парчета, а файловете, записани на случаен принцип (като тези, които са картографирани в паметта), могат да бъдат разпределени непрекъснато

Има още много функции на XFS, които да изследвате и можете да научите повече на уебсайта на XFS и Ръководството за потребителя на XFS.

Извършване на тестове за производителност на MongoDB

Както може би сте научили в предишните ни публикации, ние използвахме YCSB, за да сравним производителността на MongoDB, включително подробно сравнение на поддържаната от MMAP производителност на MongoDB при различни доставчици на облак. Решихме да използваме същото работно натоварване на YCSB, което използвахме по-рано:Работно натоварване A (тежка актуализация:50% четения + 50% актуализации). Фазата на вмъкване на работното натоварване измерва производителността на 100% натоварвания за запис, докато фазата на зареждане ще измерва производителността спрямо действителното натоварване (50/50% четене/актуализиране).

Нашите тестове бяха извършени на драйвера за синхронизиране на MongoDB, а дистрибуцията на Linux беше Amazon Linux (4.4.44-39.55.amzn1.x86_64). Взехме MongoDB версия 3.2.10, работеща с WiredTiger за нашите тестове, тъй като WT е мястото, където се очакваха по-добри печалби и проведохме тестовете на 2 различни хардуерни устройства:

  • Високоскоростни дискове :AWS EC2 c3.large екземпляр, в който MongoDB е използвал SSD дискове в конфигурация RAID 0 за съхранение (съпоставя се с размер на клъстер ScaleGrid HighPerfLarge).
  • Дискове със средна скорост :AWS EC2 m3.medium екземпляр, където MongoDB е използвал EBS (Elastic Block Store) IOPS осигурен диск, зададен на 300 IOPS (съпоставя се с размер на клъстер ScaleGrid Medium).

Забележка:Всякакъв вид тестване на производителността във виртуализирани среди трябва да се приема с известна доза сол. Нашата цел тук не е да сравним числата за производителност в тези среди, а да предоставим някакво количествено измерване на разликите в производителността между EXT4 и XFS в една и съща виртуализирана среда.

Високоскоростен SSD диск

Проведохме следния тест на нашата високопроизводителна платформа:

  1. Вмъкнати 6 милиона записва при различни натоварвания на сървъра (чрез промяна на броя на нишките на YCSB клиент).
  2. Изпълнено работно натоварване при брой на операциите от 10 милиона записва при различни натоварвания на сървъра.

Резултати от производителността на SSD диск

Характеристики на пропускателна способност/закъснение за вмъкване на 6M запис във високопроизводителната конфигурация:

Характеристики на пропускателна способност/закъснение за 10M операции за запис/актуализация на конфигурация с висока производителност:

Наблюдения на SSD диск

  • XFS е невероятно бърз както по време на фазата на вмъкване, така и по време на изпълнение на работното натоварване. При по-малък брой нишки е с до 50% по-бърз от EXT4. С нарастването на натоварването и двете файлови системи бяха ограничени от пропускателната способност на основния хардуер, но XFS все още запази лидерството си.
  • Латентността както за XFS, така и за EXT4 бяха сравними и при двете серии. Имайте предвид, че всички числа са в микросекунди.

По-бавен EBS осигурен IOPS диск (300 IOPS)

Следният тест беше извършен на нашата средна производителна платформа:

  1. Вмъкнати 3 милиона записва при различни натоварвания на сървъра (чрез промяна на броя на нишките на YCSB клиент).
  2. Изпълнено работно натоварване при брой операции от 5 милиона записва при различни натоварвания на сървъра.

Предвид нашия опит с конфигурацията от висок клас, очаквахме XFS да има прилична преднина и в тази платформа.

Резултати от производителността на IOPS диск

Характеристики на пропускателна способност/закъснение за вмъкване на 3M запис в конфигурацията на носителя:

Характеристики на пропускателна способност/закъснение за 5M операции за запис/актуализация на конфигурацията на носителя:

Наблюдения на IOPS диск

  • XFS е сравним, макар и малко зад EXT4 в конфигурацията със среден размер. Изглежда, че при това ниво на системни ресурси оптимизацията на производителността на XFS всъщност не прави разлика. Това е важно наблюдение, ако обмисляте внедряване на XFS на по-малки екземпляри с надеждата за подобрена производителност.

XFS срещу EXT4 на AWS EC2

От гледна точка на производителността, XFS наистина е умножител на сила, когато се съчетае с високоскоростни дискове, от които може да се възползва реално. За системи от нисък и среден клас изглежда, че не може да направи много за подобряване на производителността ви.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Брой в хранилището на Spring Data MongoDB

  2. Не може да се създаде индекс в mongodb, ключът е твърде голям за индексиране

  3. Получаване на _id на вмъкнат документ в MongoDB?

  4. Как да изключите едно конкретно поле от колекция в Mongoose?

  5. 3 начина за пускане на индекс в MongoDB