Идет большая нагрузка ядер процессора у mariadb

Главные вкладки

Аватар пользователя cwpnaWLs7M4a cwpnaWLs7M4a 6 февраля 2024 в 11:25

Как узнать какой модуль или запрос грузит сервер?
Mariadb 10.6, drupal 10.2, php 8.1 .
Указал в конфиге лог для медленных запросов но сервер туда ничего не пишет.

Лучший ответ

Аватар пользователя cwpnaWLs7M4a cwpnaWLs7M4a 24 сентября 2024 в 5:25

решил вопрос. посмотрел какие запросы часто грузят процессор . в моем случае паразитивный sql count *. внедрил в апи друпала в /var/www/drupal11/web/core/lib/Drupal/Core/Database/Query/select.php
в public function countQuery()
временно следующий код:

$file = '/home/jura/tmp/people.txt';
ob_start();
echo "jura0\n";
debug_print_backtrace();
$contents = ob_get_contents();
file_put_contents($file, $contents,FILE_APPEND);
ob_end_clean();

он записал имя всех программ которые запускают sql count.
оказалось перегружают обыкновенный views даже если из кэша. также выяснилось что 3 contrib модуля shield, redirect after login и редко tvi участвуют в этом безобразии.

по итогу буду ставить обратный прокси nginx для того чтобы сохранял готовы страницы например в течении часа, а не запускал их генерацию каждый раз. должна увеличиться скорость и уменьшиться стоимость (за счет уменьшения ядер) хостинга.

Комментарии

Аватар пользователя bsyomov bsyomov 8 февраля 2024 в 0:25

Ну во-первых, надо наверное почитать документацию о логе медленных запросов, установить нужный лимит на длительность запроса и.т.п.
Также в realtime можно посмотреть что происходит в mysql/mariadb с помощью утилиты mytop.

Аватар пользователя cwpnaWLs7M4a cwpnaWLs7M4a 27 июня 2024 в 23:01

ваши советы помогли, спасибо. mytop это вещь. вот только определить кто генерит эти запросы это проблема. наверно надо отлаживать друпал целиком.

Аватар пользователя cwpnaWLs7M4a cwpnaWLs7M4a 24 сентября 2024 в 5:25

решил вопрос. посмотрел какие запросы часто грузят процессор . в моем случае паразитивный sql count *. внедрил в апи друпала в /var/www/drupal11/web/core/lib/Drupal/Core/Database/Query/select.php
в public function countQuery()
временно следующий код:

$file = '/home/jura/tmp/people.txt';
ob_start();
echo "jura0\n";
debug_print_backtrace();
$contents = ob_get_contents();
file_put_contents($file, $contents,FILE_APPEND);
ob_end_clean();

он записал имя всех программ которые запускают sql count.
оказалось перегружают обыкновенный views даже если из кэша. также выяснилось что 3 contrib модуля shield, redirect after login и редко tvi участвуют в этом безобразии.

по итогу буду ставить обратный прокси nginx для того чтобы сохранял готовы страницы например в течении часа, а не запускал их генерацию каждый раз. должна увеличиться скорость и уменьшиться стоимость (за счет уменьшения ядер) хостинга.