Окружающая среда:
1 физическая машина
1 виртуальная машина
Обе машины работают под управлением MySQL 5.5.28 (64Bit) с идентичными базами данных. Я администрирую среду VMWare, а другой пользователь управляет частью базы данных. Физическую машину необходимо заменить виртуальной машиной, чтобы все данные были перенесены. Проблема в том, что производительность виртуальной машины ужасна. Администратор БД запускает большой запрос непосредственно на обеих машинах, а физический в 2-3 раза быстрее, чем виртуальная машина. Итак, мы попробовали пару вещей с виртуальной машиной: больше ОЗУ, больше процессоров, я также без особых усилий подключил устройство RAW с размером блока 16 Кбайт. Физический всегда превосходит виртуальную машину.
Наша среда VMWare состоит из 3 хостов с:
Мы обнаружили некоторые проблемы с конфигурацией, и я сделал несколько вещей, чтобы попытаться улучшить производительность:
На хостах возникла проблема с задержкой, о которой я читал в Dell относительно отложенного подтверждения TCP и LRO - рекомендуется отключить их, и я сделал это, и это немного увеличило пропускную способность в виртуальных машинах (провел быстрый тест с IOMeter). База данных MySQL довольно тяжелая (файл 120 ГБ), если я скопирую ее в виртуальной машине с одного тома на другой с помощью проводника Windows, я получаю постоянные 130 МБ / с (виртуальный диск c: - Windows, диск e: - необработанное устройство). Если запрос выполняется, я вижу в мониторе ресурсов Windows, что файл читается со скоростью ~ 500 КБ / с. В чем может быть проблема?
Администратор базы данных также сказал мне, что он пробовал разные настройки базы данных в my.ini, пытался разделить огромный файл db на более мелкие, и все без особых усилий (лично я не эксперт по MySQL, поэтому я должен ему верить).
Я знаю, что Windows 7 - не лучшая ОС для работы в качестве сервера БД, но это должен быть быстрый тест на пару дней, позже мы будем использовать 2008 R2. Я попробую провести тестирование с помощью ioping и / или IOMeter (какие-нибудь рекомендации по этому поводу?). Заранее спасибо.
РЕДАКТИРОВАТЬ
Мониторинг необработанного устройства непосредственно в SAN:
При выполнении запроса к БД: http://s1.directupload.net/file/d/3185/x5rpsmg5_png.htm
При копировании файлов с помощью проводника Windows: http://s14.directupload.net/file/d/3185/ug6zlpki_png.htm
Загрузка процессора виртуальной машины при выполнении вышеуказанных действий: http://s14.directupload.net/file/d/3185/2qgmbx9q_png.htm
Ваша проблема - серверная часть хранилища.
Из вашего графика видно, что ваша SAN не способна к высоким случайным значениям IOPS (см. Средние значения IOPS и среднюю глубину очереди).
Чтобы улучшить ситуацию, попробуйте следующее:
my.cnf
файл и добавление (или изменение) строки innodb_buffer_pool_size = 8589934592
Похоже, что проблемы вызывает стек хранилища VMWare. Даже если вы переместили хост на собственное оборудование, помните, что в общем хранилище VMWare вся рабочая нагрузка, использующая одно и то же хранилище данных, использует одни и те же ресурсы хранилища. VMWare стала лучше передавать необработанную производительность хранилища своим виртуальным машинам, но это не так хорошо, как необработанное устройство.
Проверьте эту теорию следующим образом: создайте необработанную карту устройств (возможно, клон) вашей виртуальной машины и перезапустите тест. Если это намного ближе к результатам физического сервера, в этом ваша проблема. Изменить: если вы не можете использовать необработанное устройство из Windows 7, вам придется попробовать его с помощью серверной ОС. Если это решит проблему до того, как вы перейдете к необработанному устройству, у вас будет другой ответ: P
В моем магазине мы все еще запускаем prod на VMWare 4, поэтому мы должны использовать RDM для всех наших баз данных. Возможно, вам не придется заходить так далеко, поскольку вы используете лучшую версию VMWare, но, возможно, попробуйте выделить хранилище данных с его собственными lun на разных портах хранения для этой базы данных.