Я заметил, что наш веб-проект (Drupal) работает медленнее, когда он использует memcached в виртуальном окне. Время загрузки страницы без memcached более чем вдвое быстрее. Я не заметил неестественного поведения memcached.
Виртуальный ящик (с использованием бродяги):
Специфические настройки Drupal:
$conf['cache_backends'][] = 'sites/all/modules/contrib/memcache/memcache.inc';
$conf['cache_class_cache_form'] = 'DrupalDatabaseCache';
$conf['cache_default_class'] = 'MemCacheDrupal';
$conf['memcache_key_prefix'] = 'oursite_';
Просто для сравнения с нативной (не виртуализированной) средой - в том же проекте memcached улучшает производительность на 10-20%.
Любая идея? Есть ли что-нибудь, где я мог бы продолжить расследование?
То, что вы видите, в значительной степени соответствует тому, что я ожидал. Люди, которые говорят вам, что VirtualBox «обеспечивает ту же производительность», что и реальное оборудование, либо лгут, либо никогда не запускали настоящих стрессовых рабочих нагрузок на VirtualBox и базовой ОС.
Конечно, существуют ситуации, когда VirtualBox будет работать так же хорошо (возможно, даже немного лучше, чем) физическое оборудование, но это не одна из них.
VirtualBox - это гипервизор типа 2.
Каждое действие, которое вы выполняете в VirtualBox, должно воздействовать на эмулируемое оборудование и передаваться в реальную ОС, лежащую в основе системы, для фактической обработки запроса.
Со всеми этими дополнительными накладными расходами я ожидал, что программа, интенсивно использующая память (например, memcache), будет сканировать в режиме эмуляции.
У меня действительно нет предложений по повышению производительности виртуального бокса в таких условиях.
Вы можете поиграться с настройками, выделить большие объемы ОЗУ для своего экземпляра виртуального бокса и указать своей ОС хоста, чтобы она отдавала приоритет процессу виртуального бокса и никогда не меняла его местами, но все это неоптимально.
Я рекомендую оставлять memcache отключенным для ваших экземпляров виртуального бокса, если вы специально не тестируете функции, связанные с memcache.
В качестве альтернативы переключитесь на гипервизор типа 1 (VMWare, Hyper-V) или гипервизор производственного качества типа 2 (KVM). Вы, вероятно, увидите производительность тех, которые более точно соответствуют тому, что вы видите на физическом оборудовании.