Назад | Перейти на главную страницу

ЦП Amazon RDS занимает около 55-65% после оптимизации некоторых таблиц Mysql.

У меня было большое потребление оперативной памяти, и в поисках решения я выполнил сценарий mysqltunner для отслеживания возможных оптимизаций в базе данных Mysql. Его первым советом было бежать

OPTIMIZE TABLE tablename;

Так как у меня было около 40 таблиц для оптимизации, я запустил его со следующим скриптом php:

<?php

    // connect your database here first 

    $mysqli = mysqli_connect("localhost", "user", "password", "database"); 

    if($mysqli){
        echo "Connexion established";
    }else{
        echo "Imposible to establish a connexion to the database";
    }

    $sql = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'database'";

    $rs = mysqli_query($mysqli, $sql);

    while($row = mysqli_fetch_array($rs))
        {
            $tbl = $row[0];
            $sql = "OPTIMIZE TABLE `$tbl`";
            mysqli_query($mysqli, $sql);
        }

    mysqli_close($mysqli);

    echo "Optimization finished";

?> 

И когда он закончил выполнение, я увидел, что было освобождено 600 МБ ОЗУ. Однако загрузка ЦП снизилась с 5% до 55%.

Я подключился к базе данных и запустил

SHOW PROCESSLIST;

получение этого вывода

+-------+----------+---------------------+-------+---------+------+-------+------------------+
| Id    | User     | Host                | db    | Command | Time | State | Info             |
+-------+----------+---------------------+-------+---------+------+-------+------------------+
|  1020 | rdsadmin | localhost:39883     | mysql | Sleep   |    3 |       | NULL             |
| 60204 | user     | 172.31.11.223:40268 | NULL  | Query   |    0 | init  | show processlist |
+-------+----------+---------------------+-------+---------+------+-------+------------------+

Процесс 1020 пользователя rdsadmin присутствует постоянно, я полагаю, он должен быть там. Но очевидно, что нет потоков, которые могли бы использовать столько ЦП ...

У вас есть представление о том, что может происходить, и о возможных решениях?

Спасибо!

Для меня решением было перезапустить экземпляр через консоль AWS, и теперь все работает, как ожидалось. Экземпляр использует 0–10% ЦП большую часть времени, а оперативная память использует примерно на 1 ГБ меньше, чем раньше.