Гораздо медленнее производительность MySQL на виртуализированном сервере

Я занимаюсь виртуализацией и обновлением старого 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, и ничего особенного не бросается в глаза.

Что я могу здесь упустить? Это аппаратное обеспечение виртуального хоста?


person deerman20    schedule 26.03.2018    source источник
comment
Я думаю, что это MySQL. Правильно ли вы настроили MySQL?   -  person Raymond Nijland    schedule 26.03.2018
comment
Да, я так думаю. Как я уже сказал, я сравнил файлы конфигурации, и между ними нет ничего необычного. Тем не менее, это разные версии Ubuntu и MySQL, поэтому я полагал, что всегда есть шанс, что я что-то упустил в более новых версиях.   -  person deerman20    schedule 26.03.2018


Ответы (1)


Вы обновили инструменты vmware? если не сделать так. Затем, на этом хосте ESXi у вас есть другие виртуальные машины? Если да, я бы посоветовал вам создать пул ресурсов, а затем настроить лимиты ресурсов. В пуле ресурсов количество ресурсов, которое вы назначаете, будет зарезервировано для вашей виртуальной машины, поэтому вам не придется делиться с другими виртуальными машинами.

person user3202232    schedule 22.05.2018