mysql сжирает все CPU(

bazziga

VIP
VIP
Регистрация
6 Май 2017
Сообщения
59
Реакции
12
Баллы
8
Привет ребят. Что делать? мускл сжирает весь процессор. Отсюда проблема с загрузкой сайтов( ВДС от френдов 4 ядра, 4 оперативы. Включено кэширование мускл запросов
upload_2018-3-18_18-30-14.png
Включено кэширование для www Доменов
upload_2018-3-18_18-30-46.png
Включена оптимизация в DLE.

включено кэширование в CF...
Посещение всех сайтов около 10 000 в сутки.
Нагрузка на CPU доходит до 250+ %
upload_2018-3-18_18-31-48.png

Мониторинг через Mytop
upload_2018-3-18_18-32-54.png

2 недели мучаюсь с данным вопросом( МОжет у кого есть какие мысли, как помочь с данным вопросом?
 

GENERIC

Гуру
Кодер
Регистрация
22 Фев 2017
Сообщения
455
Реакции
195
Баллы
43
Модули какие на сайтах? Которые непосредственно работают с мускл
 

Лукорез

Новичок
Регистрация
24 Фев 2017
Сообщения
214
Реакции
132
Баллы
43
Обратите внимание, что если вы хотите заключить сделку с этим пользователем, он заблокирован
@bazziga, При большой кол-ве строк в базе, SELECT достаточно ресурсоемкая операция, настрой индексы таблиц.
 

bazziga

VIP
VIP
Регистрация
6 Май 2017
Сообщения
59
Реакции
12
Баллы
8

Лукорез

Новичок
Регистрация
24 Фев 2017
Сообщения
214
Реакции
132
Баллы
43
Обратите внимание, что если вы хотите заключить сделку с этим пользователем, он заблокирован

PunPun

Coder
Команда форума
Приватовец
Регистрация
23 Фев 2017
Сообщения
618
Реакции
402
Баллы
63
Открываешь /engine/classes/mysql.php находишь
PHP:
// $this->query_list[] = array( 'time'  => ($this->get_real_time() - $time_before), 
                                        // 'query' => $query,
                                        // 'num'   => (count($this->query_list) + 1));
Меняешь на
PHP:
$this->query_list[] = array( 'time'  => ($this->get_real_time() - $time_before), 
                                        'query' => $query,
                                        'num'   => (count($this->query_list) + 1));
Открываешь /engine/modules/main.php находишь
PHP:
$db->close();
Выше вставляешь
PHP:
if($member_id['user_group'] == 1) {
    print_r($db->query_list);
}
Потом заходишь в настройки в админ панели, отключаешь кэш, чистишь кэш. Заходишь на главную, открываещь исходный код и скидываешь скриншот запросов, потом так же в полной новости. А не эти обрезки.
 

bazziga

VIP
VIP
Регистрация
6 Май 2017
Сообщения
59
Реакции
12
Баллы
8
Открываешь /engine/classes/mysql.php находишь
PHP:
// $this->query_list[] = array( 'time'  => ($this->get_real_time() - $time_before),
                                        // 'query' => $query,
                                        // 'num'   => (count($this->query_list) + 1));
Меняешь на
PHP:
$this->query_list[] = array( 'time'  => ($this->get_real_time() - $time_before),
                                        'query' => $query,
                                        'num'   => (count($this->query_list) + 1));
Открываешь /engine/modules/main.php находишь
PHP:
$db->close();
Выше вставляешь
PHP:
if($member_id['user_group'] == 1) {
    print_r($db->query_list);
}
Потом заходишь в настройки в админ панели, отключаешь кэш, чистишь кэш. Заходишь на главную, открываещь исходный код и скидываешь скриншот запросов, потом так же в полной новости. А не эти обрезки.
upload_2018-3-18_21-58-25.png
После ребута сервера какое-то время время ответа ответа бд нормальное (скррин сделан после ребута, т.к. перед этим 500 ошибку било). Но таблицы такие-же
 

PunPun

Coder
Команда форума
Приватовец
Регистрация
23 Фев 2017
Сообщения
618
Реакции
402
Баллы
63

bazziga

VIP
VIP
Регистрация
6 Май 2017
Сообщения
59
Реакции
12
Баллы
8
Нет, у тебя ORDER RAND убрать этот запрос нужно
блин. я не вьезжаю... Убрать из тега custom в шаблоне, типо {custom category="47" template="slider-film" aviable="global" from="0" limit="32" cache="no" order="reads"} ? Верно понимаю?

UPD.пардон. Все. Въехал. Пасибо за помощь) Сча буду мониторить результат
 
Последнее редактирование:

wawe

Новичок
Регистрация
9 Июл 2017
Сообщения
588
Реакции
208
Баллы
43
Подскажите пожалуйста. Сделал всё как описали выше.
Это запрос с полной новости.

[time] => 6.103515625E-5
[query] => SET SESSION sql_mode='ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
[num] => 2

Подскажите что поправить ?
 

Seva

Новичок
Регистрация
1 Мар 2017
Сообщения
48
Реакции
17
Баллы
8
Тоже самое начал нагружать с 18 числа мускул, что случилось не понятно до этого всегда было все нормально.
Код:
 [time] => 0,17897796630859
            [query] => SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM kino__post p LEFT JOIN kino__post_extras e ON (p.id=e.news_id) WHERE category regexp '[[:<:]](2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|27|28|29)[[:>:]]' AND approve=1 AND date < '2018-03-28 16:25:04' ORDER BY rating DESC LIMIT 0,4
            [num] => 5
        )

    [5] => Array
        (
            [time] => 0,0010969638824463
            [query] => SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM kino__post p LEFT JOIN kino__post_extras e ON (p.id=e.news_id) WHERE category regexp '[[:<:]](2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|27|28|29)[[:>:]]' AND approve=1 AND date < '2018-03-28 16:25:04' ORDER BY comm_num DESC LIMIT 0,4
            [num] => 6
        )
 
Сверху Снизу