Привет! Решили поделиться опытом, так как многие на форуме жалуются на ооочень долгую работу некоторых запросов и в целом сайта, после начинают хаить разработчиков ядра. И конечно же при этом забывают, что не только от проектировщика зависит то как быстро поедет автомобиль который дал колесную базу, а в целом от работы всей экосистемы. От мастеров которые создали обвесы, от производителей шин, от дорожного покрытия и от инфраструктуры.
В общем расскажем вам очередной кейс из нашей практики.
Multi-Vendor: version
4.14.2.SP1 MULTIVENDOR RU
Запускаем очередной проект и клиент начал жаловаться на тормоза системы, что мол страница с товарами продавца грузится неприлично долго около 90 секунд с почти 11000 товаров. 10888 если быть точнее, но сути не меняет.
То что клиент еще любитель пошалить на сайте, в плане начитался умной литературы и давай регулярно чистить кэш, прям каждый день. Но доводы, что кэш это очень важная и нужная штука для быстрой работы сайта не шибко доходила до клиента и его админа. В нам пришлось заблокировать кнопку очистки кэша и заблокировать доступ к FTP иначе даже тест было невозможно провести.
Мы смотрим у клиента запросы и ничего нового невидим, нового в плане отличительного от того что должно быть. Берем нашу демку на которой 5000
000 товаров на вендоре и получаем 1,2 секунды, начинаем делать тесты на стресс, полюбили целый день на проверку модулей и кода, добрались до сервера и тут мы и заметили самое интересное отличие у нас стоит БД mysql-8.0 а у клиента mysql-5.7
Делаем дамп и разворачиваем на mysql-8.0 переключаем работу сайта и о чудо, сайт полетел.
Версия PHP 7.4.28 не менялась.
Конечно есть куда работать и оптимизировать код для более быстрой загрузки, переделать запросы в ядре на подсчет строк для пагинации, но наверное наши коллеги уже об этом знают и добавят в очередное обновление и конечно для скорости работы под нагрузкой сменить бы сервер на сверхбыстрые диски потому как сейчас стоят обычные SSD, а у них скорость будет на порядок ниже. Для разработки и старта будет норм, но вто для работы в боевом режиме с большим трафиком то надо бы переезжать будет.
Скрин сохранился первичный
При формировании кэша
После формировании кэша на сервере
И к слову говоря, по восторженному отзыву клиента ускорение получил весь сайт и полетела и админка админа, и админка вендора и витрина. Видимо так как мы не тусовались на магазине клиента каждый день и работали на своих серверах этих тормозов просто не видели.
Итог смените базу на mysql-8.0 и будет вам счастье! Но пожалуйста не забывайте что если докер давно не обновлялся, то его следует сперва обновить.