• Добрый день!

    Возникла следующая проблема. Есть скрипт на Python, который генерирует массив постов для публикации на сайте WordPress (ВП). Посты хранятся в памяти в массиве в формате JSON для выгрузки на ВП через REST API функцией requests.post.
    Все замечательно и быстро постится первые 300-400 постов, htop показывает несколько процессов mariadb, по несколько постов в секунду размещаются на сайте. Потом все начинает замедляться, через некоторое время остаются всего 2 процесса mariadb, потребляющие 90% CPU на всего одном ядре (скачут по разным). Память не утилизируется, свободно 10-11Гб из 12.
    Скорость записи постов резко падает до 1-2 в 5-10 сек (чем дальше, тем хуже), постепенно постинг вообще почти умирает, а надо записать несколько тысяч постов.

    Настройки БД крутил не сильно,то, что есть не помогает:

    my.conf:

    [mariadb]
    performance_schema=ON

    log-slow-queries=/var/log/mysql/mariadb-slow.log

    skip-name-resolve=1
    innodb_buffer_pool_size=2G
    innodb_log_file_size=512M
    slow_query_log=1
    tmp_table_size=64M
    max_heap_table_size=64M
    thread_handling=pool-of-threads
    query_cache_size=0

    Пробовал Redis, WP-Cache, WP-Optimize, но это все для чтения, при записи они не работают.

    Вдруг кто-нибудь что посоветует, направит где хоть покопать?

    Заранее спасибо!

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Добрые люди советуют в таких случаях разбивать запись на несколько пачек — постов по 100 — и тормозов не будет.

    Спасибо, но не совсем понятно как это реализовать т.к. постинг идет в цикле. И что это может дать? Там же не одной записью сразу тысяча постов льется.

    Парсер отправляет запрос и ждет ответ от сервера, когда ответ приходит, тогда выкладывает следующий пост. Почему-то ответ от сервера начинает приходить все дольше и дольше…

    Ничего там толком не ускорить, пройденный этап.

    Пишите свой обработчик на $wpdb->insert.

    Вставляете запись, получаете id, привязываете метаполя и таксономии если нужно. На самом деле 15 строк кода.

    И тогда скорость в сотни раз быстрее.

    Спасибо, это наверное для PHP предложение? У меня скрипт на питоне, как там такой обработчик реализовать? И, самое главное, почему такое с базой происходит? Что блокирует размещение поста?

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Тема «Замедление размещения постов в WordPress» закрыта для новых ответов.