Переезд MySQL с localhost на выделенную машину

Black Hat

Постоялец
Регистрация
15 Май 2015
Сообщения
167
Реакции
112
Добрый день!
Проблема в том, что сейчас в мускул на одну страницу идет 20 тыс запросов (переделать/оптимизировать не предлагайте, это исключено). Такая страница одна, но она критичная.

Переезд MySQL с localhost на выделенную машину - хорошо, но есть сомнения что это поможет именно в этом случае. На локалхосте пересылка результатов - практически моментальная, а если вынести на отдельную машину - то будет задержка сети. Умножаем это на 20 тыс и получается кругленькая сумма.
У кого есть опыт - это так? И как-то можно максимально снизить эту задержку? Что если это будет на одной физической машине, а внутри нее - на разных виртуальных?
 
в рамках одного дц, по гигабитному порту вы этого не заметите особо.
Так же посомтрите в сторону кеширования самой страницы, построения этой страницы с использованием ajax, то есть сначала отобразить самую нужную страницу, а потом уже доп инфо подгружать.
Ипредложу задуматься о логике построения этой страницы. Скорее всего у вас кривые запросы или кривой код, который делает кучу запросов в цикле, более чем уверен что это все можно сделать куда более оптимальней.
Если что пилите в лс по оптимизации.
 
Варианты по приоритету:
1) Кеш запросов
2) Виртуализация с выделенным сервером под бд (у меня так на OpenVz было сделано)
3) VPN между машиной и сервером бд (имхо уменьшит накладные расходы на установку соединения)
 
Оптимизировать тут нечего, ибо это штатная функция битрикса, а в ядре ковырять - неблагодарное дело. И аякс не поможет, так как этот аякс и тупит.
Кеш запросов работает на ура, практически все с него. В слоу лог ничего не падает, уже было профилирование.
 
Проблема в том, что сейчас в мускул на одну страницу идет 20 тыс запросов (переделать/оптимизировать не предлагайте, это исключено).
Оптимизировать можно всё и не всегда нужно лезть в ядро, если ответы от сервера не меняются в течении определённого и известного времени, то кешировать можно на уровне сервера nginx/apach с хранением в рам - настроить сложно, но скорость рулит.
Переезд MySQL с localhost на выделенную машину - хорошо, но есть сомнения что это поможет именно в этом случае. На локалхосте пересылка результатов - практически моментальная, а если вынести на отдельную машину - то будет задержка сети. Умножаем это на 20 тыс и получается кругленькая сумма.
Если машина в твоей локальной сети, может выгореть. Переносить на впс или дедик очень мало смысла и в очень редких случаях.
У кого есть опыт - это так? И как-то можно максимально снизить эту задержку? Что если это будет на одной физической машине, а внутри нее - на разных виртуальных?
Виртуальные машины на виртуализацию очень сильно забирают ресурсы - скорее всего будет медленнее. Совсем недавно ставил эксперимент с виртуальным диском подключаемым к основной ОС - падение вполне заметно (мерял CrystalDiskMark). В общем случае виртуалки это скорее способ равномерного разделения ресурсов на множество пользователей или относительно безопасного выполнения подозрительного софта.

Очень часто скорость БД упирается в диск. И зная это, в похожем вашему случае выносил бд на рам диск SoftPerfect RAM Disk ... и оказалось, что проблема в слабом процессоре ;) Но для такого хака необходимо стабильное питание и периодические бекапы на винт.
 
Виртуальные машины на виртуализацию очень сильно забирают ресурсы - скорее всего будет медленнее.
Можно поспорить.
Согласно сайту OpenVZ, накладные расходы на виртуализацию очень малы, и падение производительности составляет всего 1-3 %, по сравнению с обычными Linux-системами. Хоть и виртуализация условная. Можно попробовать сделать master/slave и забалансировать нагрузку между ними ну или смонтировать mysql/data в оперативку =)
Ну а вообще, битрикс в топку!
 
если ответы от сервера не меняются в течении определённого и известного времени
Там пересчет. Меняется. Либо с головой и ногами в ядро лезть, либо наращивать железо.
Виртуальные машины на виртуализацию очень сильно забирают ресурсы - скорее всего будет медленнее.
Уже сайт (php + mysql) крутится под виртуальной машиной, причем от микрософта. Сейчас идея сделать еще одну машину на SSD и перетащить туда мускул.
бд на рам диск SoftPerfect RAM Disk
Может просто engine=memory (там без транзакций)? Но все равно исключено. This is Bitrix!
 
Назад
Сверху