Як підвищити продуктивність vagrant

Як підвищити продуктивність vagrant

Vagrant - це безцінний інструмент для створення стандартизованих віртуалізованих середовищ. Замість вимоги від користувача встановити Postgres, Redis, Elasticsearch і т.д. для запуску і розробки програми, - Ви просто говорите їм зробити три дії (можливо перші два вже не потрібні):

  • Завантажити та встановити VirtualBox
  • Завантажити та встановити Vagrant
  • З папки проекту запустити команду:

Проблема, з якою я стикався знову і знову, - кожен третій, кого я просив це зробити, скаржився мені що додаток запускається в Vagrant працює болісно повільно. Під катом ті крупиці знань, які я зібрав, намагаючись вирішити цю проблему.

використовуйте NFS

За замовчуванням, VirtualBox забезпечує спільне використання між хостом і гостьовими операційних систем за допомогою власних механізмів обміну. Незважаючи на те що цей метод працює на всіх типах хостів, - це неймовірно повільно, по крайней мере, в Unix системах. Рішення - використовувати NFS, яка набагато швидше. Наскільки швидше, запитаєте ви? Включення NFS подвоїло продуктивність Rails-додатки, в залежності від кількості запитів вона змогла служити протягом 2 хвилин. В кінці статті Ви дізнаєтеся про технології виміру продуктивності.
Додайте наступні рядки в Ваш файл конфігурації Vagrant, щоб включити NFS:

Зверніть увагу: за великим рахунком тут Vagrant не винен, - це витрати VirtualBox. Однак було б не погано, якби в документації по Vagrant був розділ «Продуктивність». Дана настройка здається несуттєвою до того моменту, поки Ви не вирішите оцінити продуктивність, і не розумієте, що втрачали половину того, що могли б отримати.
Використовуйте всі ядра процесора і чверть пам'яті.
Більшість людей не утруднюється зазначенням Virtualbox-у ​​необхідності використовувати більш одного ядра CPU і стандартного обсягу оперативної пам'яті. Це в принципі зрозуміло, - складно придумати настройки, які будуть давати однакову продуктивність, на різних хостових системах. Це зайняло якийсь час, але я зібрав параметри, які повинні задати правильні настройки для кожного комп'ютера:

Використовуйте vagrant package

Зазвичай процес установки Vagrant включає в себе завантаження базової ОС (зазвичай lucid64 або precise64) і встановлення потрібних пакунків за допомогою Puppet або Chef. Я виявив що замість мороки з написанням скриптів ініціалізації, простіше запустити базову систему, встановити всі вручну, вийти з SSH-сесії і потім запустити команду:

На виході Ви отримаєте пакет NAME.box, який можна завантажити в хмару (я використовував S3) і в конфігураційному вказати файлі Vagrant наступне:

Таким чином, пр запуску команди vagrant up замість повторної ініціалізації, - скочується і відразу запуститься попередньо налаштована середу.

Додатково: оцінка продуктивності NFS

Я використовував wrk. відмінний інструмент для бенчмаркінгу HTTP, на мою думку зручніше ніж ab.
Запуск Vagrant при використанні вбудованих засобів virtualbox:

Запуск програми на хостовой системі (Macbook):

Запуск програми в Vagrant при використанні NFS:

Схожі статті