Я начал переносить многие наши среды разработки в Vagrant. До сих пор это было отлично для почти всего, но наша первая миграция Drupal непригодна для использования. Это невероятно медленно. Наши сайты Wordpress, CakePHP и Node.js все работают очень адекватно или лучше, но не Drupal. Это просто ужасно.
Коробка - созданная Veewee Ubuntu 12.04 64-разрядная машина. Это тот же базовый ящик, который мы используем для всех наших веб-проектов, поэтому ничего особенного нет. В моем каталоге сайтов у меня есть канонический каталог (sites/my-site/
) со всеми ресурсами сайта и символическая ссылка на этот канонический каталог с именем домена (sites/dev.mysite.com -> /vagrant/www/sites/my-site
), который, очевидно, требуется для некоторого модуля, который использует команда.
Это смешанная команда разработчиков Windows/OSX, и она замедляется на обеих платформах. Единственный полу-нетрадиционный отрывок из моего Vagrantfile
таков:
config.vm.forward_port 80, 8080
config.vm.share_folder( "v-root", "/vagrant", ".", :extra => 'dmode=777,fmode=777' )
# Allows symlinks to the host directory.
config.vm.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
Vagrant::Config.run do |config|
config.vm.provision :shell, :path => "provision.vm.sh"
end
Мой помощник оболочки выполняет только пару действий:
- Устанавливает drush
- Создает вышеупомянутую символическую ссылку в каталог канонического сайта
- Записывает серверный блок Nginx
- При необходимости создается файл
settings.php
.
Есть ли что-нибудь, что я могу сделать для повышения производительности? Как, много?
UPDATE
Я сузил это до такой степени, что проблема заключается в удаленной базе данных. Чтобы сравнить яблоки с яблоками без багажа проекта, я загрузил новую копию Drupal 7.21 и выполнил стандартную установку с веб-сервера Vagrant против 3 различных баз данных:
- Новая база данных, созданная на той же Vagrant VM, что и веб-сервер (localhost)
- Новая база данных, созданная на общем сервере dev, используемая в исходном вопросе (dev)
- Новая база данных, созданная на экземпляре EC2 (tmp)
Как только это было сделано, я вошел в систему с новым Drupal и загрузил домашнюю страницу (localhost: 8080) 5 раз. Затем я подключался к каждой базе данных и загружал одну и ту же страницу таким же образом. Я обнаружил, что страница загружалась на 4-6 раз медленнее, когда Drupal был подключен к удаленной базе данных.
Помните, что это новая (стандартная) установка. Нет проектного багажа.