Высокая загрузка процессора mariadb даже после выделения больше памяти для mariadb?

Я использую сервер aws r4.4xlarge и выделил более 60 ГБ для базы данных, но все же я столкнулся с проблемой высокой загрузки процессора.

I есть около 10 больших таблиц каждая приблизительного размера 18 ГБ с целочисленным первичным ключом. все таблицы - innodb, и я также оптимизировал innodb, добавив его в конфигурационный файл по умолчанию.

innodb_buffer_pool_size=60G #(max 60 % of your Memory if and only if Memory >= 8G)
innodb_log_file_size=15G #(min 25% of innodb_buffer_pool_size)
innodb_flush_log_at_trx_commit=2

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

+---------+-----------------+-----------------+------------------+---------+------+----------------+-----------------+----------+
| Id      | User            | Host            | db               | Command | Time | State          | Info            | Progress |
+---------+-----------------+-----------------+------------------+---------+------+----------------+-----------------+----------+
| 5415663 | root            | localhost       | test_db          | Query   |    0 | Sorting result | SELECT XXXXX    |    0.000 |

Мне нужно предложение относительно того, нужно ли мне еще что-то оптимизировать, получить максимум от mariadb.

Tasks: 339 total,   1 running, 338 sleeping,   0 stopped,   0 zombie
%Cpu(s): 13.0 us,  0.1 sy,  0.0 ni, 86.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 12582731+total, 40068792 free, 72185768 used, 13572756 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 51496540 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                    
126064 mysql     20   0 65.336g 0.063t   8968 S 205.6 53.5  51004:26 mysqld                                                                     
  1346 rabbitmq  20   0 9804208 1.022g   4228 S   2.3  0.9   1336:27 beam.smp                                                                   
  1488 redis     20   0  604496 513216   2236 S   1.0  0.4 389:01.86 redis-server                                                               
  7064 www-data  20   0  450464  38604  30744 S   0.3  0.0   0:00.93 php-fpm7.0                                                                 
  9226 www-data  20   0  383204  37932  29336 S   0.3  0.0   0:00.66 php-fpm7.0                                                                 
  9404 www-data  20   0  376000  36820  29016 S   0.3  0.0   0:00.57 php-fpm7.0 
1
задан 3 April 2018 в 08:03
3 ответа

200% - это не так много ЦП, когда у вас 16 ядер. 200% - это два полных ядра (среди 16 у вас в r4.4xlarge). Учитывая объем используемой памяти, MariaDB определенно что-то замышляет. Тот факт, что вы используете только 2 из своих 16 ядер, я бы сказал, что вы не используете ЦП.

Используйте утилиту htop , чтобы лучше увидеть, как mariaDB использует ядра.

1
ответ дан 3 December 2019 в 23:18

Произошла ошибка https: // jira .mariadb.org / browse / MDEV-15016 . Эта ошибка исправлена. Используйте последнюю версию (10.2.13, 10.3.5) и еще раз убедитесь, что все в порядке.

0
ответ дан 3 December 2019 в 23:18

большая часть процесса находится в состоянии сна...

И это совершенно нормально, особенно если ваше приложение использует пул соединений.

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

Как правило, базы данных не работают медленно.
Запросы внутри них делают.

Пример, который вы показали, был выборкой, выполняющей сортировку. Поскольку вы предоставили своей базе данных много памяти для работы, она будет пытаться выполнять сортировку «в памяти», но выполнение этого требует мощности процессора — что вы и видите.

Изучите [План объяснения] этого запроса и постарайтесь внести в него улучшения.

Как я люблю говорить:

  • Вы можете потратить несколько дней, возясь с настройками базы данных и сервера, и улучшить "производительность" на - возможно - 2 или 3 процента. очки.
  • То же самое время вы можете потратить на создание более чистой структуры таблиц, правильную индексацию и т. д., а также повысить «производительность» на - как минимум - 2 или 3 порядка величины.
0
ответ дан 1 April 2021 в 08:11

Теги

Похожие вопросы