Чрезвычайно медленный отклик сервера из-за 400 000 купонов, сгенерированных с помощью плагина генератора купонов woocommerce и медленной перегрузки и ответа MySQL Server - PullRequest
0 голосов
/ 02 октября 2018

Я решил попробовать Coupon Generator для плагина WooCommerce и обнаружил, что он великолепен.Только я знал, что это приведет к огромному снижению производительности нашего сайта.Наш сайт работает на 2 ВЫДЕЛЕННЫХ СЕРВЕРАХ с 16 ЯДРАМИ ЦП каждый для веб-сервера и сервера DATABASE.Мы заметили, что с тех пор, как было создано более 400 000 КУПОНОВ с плагином Coupon Generator для WooCommerce (об этой ошибке я не знал и не знал, потому что я думал, что это не вызовет замедления при медленном реагировании на сайте), сайт в конечном итоге стал чрезвычайно и чрезвычайномедленный.На ответ требуется от 40 до 60 секунд.Время загрузки велико и составляет менее 1 секунды.

При проверке сервер базы данных.мы получили следующие результаты:

root @ mysql ~] # top -H

top - 12:34:47 до 6 дней, 11:05, 2 пользователя, средняя загрузка: 32,71,34,69, 39,46 Задачи: всего 528, 43 работает, 485 спит, 0 остановлено, 0 зомби-процессоров: 86,1% нас, 12,3% си, 0,0% ни, 0,0% ид, 0,0% ва, 0,0% привет, 1,5%si, 0,0% памяти: всего 10120336k, использовано 7859684k, свободно 2260652k, буферы 182484k Перестановка: всего 4095996k, использовано 0k, свободно 4095996k, кэшировано 6448320k

PID ПОЛЬЗОВАТЕЛЬ PR NI VIRT RES SHR S% CPU% MEM TIME +КОМАНДА 35108 mysql 20 0 1898 м 703 м 12 м R 19,9 7,1 0: 01,74 mysqld 35104 mysql 20 0 1898 м 703 м 12 м R 19,3 7,1 0: 01,71 mysqld 35117 mysql 20 0 1898 м 703 м 12 м R 19,3 7,1 0: 00,79 mysqld 35111 mysqm 20 0 1898R 18,9 7,1 0: 01,65 mysqld 35080 mysql 20 0 1898м 703 м 12 м R 18,6 7,1 0: 02,25 mysqld 35065 mysql 20 0 1898 м 703 м 12 м R 18,3 7,1 0: 01,68 mysqld 35134 mysql 20 0 1898 м 703 м 12 м R 18,3 7,1 0: 00,73 mysqld 35053mysql 20 0 1898m 703m 12m R 18,0 7,1 0: 04,17 mysqld 35121 mysql 20 0 1898m 703m 12m R 18,0 7,1 0: 01,79 mysqld 35133 mysql 20 0 1898m 703m 12m R 18.0 7.1 0: 00.76 mysqld 35126 mysql 20 0 1898m 703m 12m R 17.6 7.1 0: 00.71 mysqld 35127 mysql 20 0 1898m 703m 12m S 17.6 7.1 0: 01.07 mysqld 35136 mysqm 20 0 1812 м R 17,6 7,1 0: 00,65 mysqld 35141 mysql 20 0 1898m 703m 12m R 17,6 7,1 0: 00,76 mysqld 35094 mysql 20 0 1898m 703m 12m R 17,3 3,1 0: 01,71 mysqld

Это очень перегружено.Сайт называет MYSQL TABLE OF более 80 МБ, что очень тяжело.

Я хотел бы спросить, потому что, как мы можем уменьшить 400 000 КУПОНОВ, генерируемых с вашим плагином, до 20 000, потому что это влияет на нас, и мы платим большую ежемесячнона основной сайт за счет этого.В дополнение к этому, сайт очень загружен, чтобы отвечать.

Пожалуйста, помогите всем!

1 Ответ

0 голосов
/ 02 октября 2018

чтобы удалить купон, используя встроенную функцию, вы можете использовать wp_delete_post( $id ); в качестве WooCommerce. Хранить купон как пользовательский тип записи.

, поэтому следующая функция будет запускаться и удалять 100 купонов одновременно при каждой инициализации области администратора.и вы можете увеличить лимит, если вы хотите

add_action( 'admin_init', 'count_coupon' );

function count_coupon() {
    global $wpdb;

    if ( ! is_user_logged_in() ) {
        return;
    }

    if ( ! current_user_can( 'manage_options' ) ) {
        return;
    }
    global $wpdb;
    $copuns = $wpdb->get_results( "SELECT ID FROM {$wpdb->prefix}posts WHERE post_type = 'shop_coupon' LIMIT 100" );
    foreach ( $copuns as $copun ) {

        wp_delete_post( $copun->ID );

    }
}

, вы можете удалить эти купоны из MySQL напрямую, но я предпочитаю этот способ.

...