MySQL 運用データベースでの異常なメモリ増加のトラブルシューティング方法

WBOY
リリース: 2023-05-29 23:25:19
転載
1749 人が閲覧しました

performance_schema の変更

会社の本番環境は Alibaba Cloud RDS を使用しているため、パラメータを変更するのが比較的便利です。デフォルトの Performance_schema は 0 ですが、今回は 1 に変更します。パラメータを変更して送信すると、データベースが再起動されます。これはビジネスのピーク時に行うことをお勧めします。

メモリ監視をオンにする

MySQL データベースにログインし、次の SQL を実行して、メモリ監視をオンにします。

update performance_schema.setup_instruments set enabled = 'yes' where name like 'memory%';
ログイン後にコピー

開いたら確認してください。

select * from performance_schema.setup_instruments where name like 'memory%innodb%' limit 5;
ログイン後にコピー

**注: **このコマンドはメモリ統計をオンラインで開くためのものであるため、開いた後に新しく追加されたメモリ オブジェクトのみがカウントされます。開く前のメモリ オブジェクトはカウントされません。次の手順を実行して、メモリ使用量が多いスレッドを特定します。

メモリ消費量の検索

統計的なイベント メモリ消費量

select event_name,
       SUM_NUMBER_OF_BYTES_ALLOC
from performance_schema.memory_summary_global_by_event_name
order by SUM_NUMBER_OF_BYTES_ALLOC desc
LIMIT 10;
+---------------------------------------+-------------------------------------+
| event_name                            | SUM_NUMBER_OF_BYTES_ALLOC           |
+---------------------------------------+-------------------------------------+
| memory/sql/Filesort_buffer::sort_keys | 763523904056                        |
| memory/memory/HP_PTRS                 | 118017336096                        |
| memory/sql/thd::main_mem_root         | 114026214600                        |
| memory/mysys/IO_CACHE                 | 59723548888                         |
| memory/sql/QUICK_RANGE_SELECT::alloc  | 14381459680                         |
| memory/sql/test_quick_select          | 12859304736                         |
| memory/innodb/mem0mem                 | 7607681148                          |
| memory/sql/String::value              | 1405409537                          |
| memory/sql/TABLE                      | 1117918354                          |
| memory/innodb/btr0sea                 | 984013872                           |
+---------------------------------------+-------------------------------------+
ログイン後にコピー

メモリ消費量が最も高いイベントは Filesort_buffer であることがわかります。経験によれば、これは並べ替えに関連しているはずです。 。

スレッドのメモリ消費量の統計

select thread_id,
       event_name,
       SUM_NUMBER_OF_BYTES_ALLOC
from performance_schema.memory_summary_by_thread_by_event_name
order by SUM_NUMBER_OF_BYTES_ALLOC desc
limit 10;
+---------------------+---------------------------------------+-------------------------------------+
| thread_id           | event_name                            | SUM_NUMBER_OF_BYTES_ALLOC           |
+---------------------+---------------------------------------+-------------------------------------+
| 105                 | memory/memory/HP_PTRS                 | 69680198792                         |
| 183                 | memory/sql/Filesort_buffer::sort_keys | 49210098808                         |
| 154                 | memory/sql/Filesort_buffer::sort_keys | 43304339072                         |
| 217                 | memory/sql/Filesort_buffer::sort_keys | 37752275360                         |
| 2773                | memory/sql/Filesort_buffer::sort_keys | 31460644712                         |
| 218                 | memory/sql/Filesort_buffer::sort_keys | 31128994280                         |
| 2331                | memory/sql/Filesort_buffer::sort_keys | 28763981248                         |
| 106                 | memory/memory/HP_PTRS                 | 27938197584                         |
| 191                 | memory/sql/Filesort_buffer::sort_keys | 27701610224                         |
| 179                 | memory/sql/Filesort_buffer::sort_keys | 25624723968                         |
+---------------------+---------------------------------------+-------------------------------------+
ログイン後にコピー

大量のメモリを消費するスレッドは、Filesort_bufferに関連していることがわかります。

特定の SQL を見つけます

先ほど見つけた thread_id に従って、ログで対応する SQL を検索します。Alibaba Cloud RDS 監査ログは比較的強力です。 thread_id に基づいて直接取得します。

MySQL 運用データベースでの異常なメモリ増加のトラブルシューティング方法

ログにはこのような SQL が多数確認され、スキャンされた行数は数千から数万に及びました。各クエリの時間は長くなく、通常は数十ミリ秒から数百ミリ秒の間ですが、同時リクエストの数は多くなります。

以上がMySQL 運用データベースでの異常なメモリ増加のトラブルシューティング方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!