Я занимаюсь виртуализацией и обновлением старого Linux-сервера, на котором работает система отчетности, разработанная собственными силами (Apache, MySQL, PHP).
Старый физический сервер работает под управлением 64-битной Ubuntu 10.04.3 LTS, MySQL 5.1.41 и PHP 5.3. На сервере установлен процессор Intel Xeon X3460 @ 2,80 ГГц (4 ядра), 4 ГБ ОЗУ.
У нас есть ESXI 5.5, работающий на HP DL380G6 с 2 x Intel Xeon X5650 6 Core 2,66 ГГц и 32 ГБ ОЗУ.
Я создал новую виртуальную машину с 4 ядрами и 4 ГБ ОЗУ, выполнил чистую установку 64-разрядной версии Ubuntu 16.04.4 LTS, MySQL 5.7.21 и PHP 7.0, перенес наше приложение, и все работает намного медленнее. Я считаю, что это MySQL, потому что при выполнении одного и того же прямого запроса на старом физическом сервере по сравнению с новым виртуализированным сервером запросы могут занимать 8 секунд (ВМ) вместо 1 (физический). Все таблицы имеют соответствующие индексы, запуск EXPLAIN на каждом сервере дает одинаковые результаты, но одна из них значительно медленнее. Когда на странице выполняется множество сложных запросов, ее загрузка может занять минуту+ вместо нескольких секунд.
Любая идея, почему это может быть? Тот же набор данных, тот же запрос, тот же движок (MyISAM). Виртуальная машина имеет гораздо более свежие версии всего, такое же количество ядер и такое же ОЗУ. Я даже попытался удвоить ЦП виртуальной машины до 2 сокетов, 4 ядер и 8 ГБ ОЗУ, и, похоже, это не оказало существенного влияния.
Я сравнил конфигурацию MySQL, и ничего особенного не бросается в глаза.
Что я могу здесь упустить? Это аппаратное обеспечение виртуального хоста?