База данных woordpress, как бысть с правильной архитектурой или как оптимизировать что есть?
Приветствую вас, коллеги!
Помогите с вопросом. Есть сайт на вордпресс, используется для недвижимости. При импорте новых данных, занимает приличное количество ресурсов
Сloud сервер 2...3 cpu, 4...5gb 70gb ssd хостинг siteground, база занимает уже около 500 мегабайт (412891945 точная цифра).
Я не специалист по базам данных, но подозреваю что процесс импорта добавляет очень много мета данных и нужно либо как то оптимизировать этот процесс.
При простой навигации по сайту нагрузка тоже есть, помогает кеширование как страниц, так и запросов. Но вот в момент добавления объектов через админку, и в момент запуска импорта очень возрастает нагрузка, и если кто то дополнительно заходит на сайт что ресурсов для обработки не хватает, и им порт прерывается и человеку сложно по сайту ходить... тк падает.
Думаю что будет нужно изменить структуру базы данных каким то образом, для чего планируем найти специалиста по базам данных.
Вдруг кто то уже сталкивался с проблемой, посоветуйте как решали.
Что то тут не сходится, 70Gb SSD и 500Gb DB?
Но сталкиваясь с импортом объемных данных уверен что у вас растет не сама база а bin log и косяк тут в том что вы использовали дефолтные настройки сервера, нужно по инструкции настроить ограничения на время хранения bin log.
An Sem, ну 500 мег это мелочь для WP, у меня есть сайт с 1гб и грузится страница до 2 секунд без всяких плагинов кеширования.
Вот тут и кроется основная проблема, хостер настраивает сервер по шаблону, у них есть один образ и из него они поднимают северы. Вы же должны понимать что каждая CMS требует индивидуальных настроек php/mysql для быстрой работы. В первую очередь надо учитывать что WP работает с innoDB и например MariaDB будет в разы быстрее mySQL любых версий, далее нужно настроить mysql для работы с innoDB используя максимум ресурсов. Так же стоит использовать как минимум php7.2 + Opcache что заметно ускорит работу системы.
То что сервер не выдерживает нагрузок и сайт тормозит во время импорта - это опять же плохие настройки сервера
lamer350, Спасибо! Но не поверишь ) все так и есть УЖЕ )
И мария, и опкеш, и мемкеш... Это то что я посмотрел в первую очередь... конечно есть небольшой шанс что все шаблонно и криво настроено.
Но вроде бы хорошая репутация у хостинг компании, так что все же грешу на кривизну структуры базы данных, слишком уж много метаданных используется, и почти уверен что большая часть не по назначению...
An Sem, ну о том что БД такая у WP всем известно и это нужно было учитывать до выбора CMS)
Но на самом деле не понятно, вы выяснили какой именно процесс ложит сервер? Все как то слишком размыто, но скорее всего не хватает CPU так как мускул нагрузит на 100% (это все догадки) и тут вот возникает вопрос, нагрузится то только одно ядро, у вас еще 2 свободно, почему тогда сайт лагает?
Тут надо отследить процесс, во что упирается система. Возможно вы обновляли мощность сервера не но обновляли конфиг и не все ресурсы задействованы. Возможно нужно ограничить сам импорт, пускай он будет медленнее но нагружать например не более чем на 50%.
переписать ядро WP - бессмысленно, занимался этим на opencart (переводя все запросы к DB на питон) и по итогу получаем не обновляемый кусок говна).
Потому для вас лучшим выходом будет либо сменить настройки плагина для импорта либо сменить плагин для импорта, либо написать отдельно скрипт. Переписывать логику WP это уже последнее о чем нужно думать).
Из своего опыта, возможно вам это так же чем то поможет.
У заказчика есть магазин с 100к товаров и в CSV делает выгрузку, сначала мы залили товары (импортировали) там куча столбцов с инфой, но в этом же файл потом используется для обновления цен раз в неделю, там же могут быть и новые товары... Потому перед выгрузкой простым скриптом из одного CSV делаю 2, первый вырезает новые товары и сохраняю в отдельный CSV, вторым удаляю все столбцы кроме артикула, цен и наличия - и импорт вместо 20 часов занимает 2.
Спасибо, у плагина импорта есть все это в настройках, 1 импорт за раз, делит большой файл на чанки и тп...
Но я попробую написать сам процесс импорта, вдруг ваша правда... Есть предположение что другой плагин вмешивается в процесс каким то образом и возможно как раз это и мешает...
An Sem, ну он делит, это понятно. Но убрав лишние столбцы вы избавляете файл от ненужных данных и ворочать такой файл намного легче. А для добавления вместо 100к строк проверяется только 45...