1. ホーム
  2. マイスル

[解決済み】MySQLのCPU使用率が高い【クローズド

2022-04-23 19:08:32

質問

最近、サーバーのCPUが非常に高くなることがあります。

CPU負荷は平均13.91(1分)11.72(5分)8.01(15分)、私のサイトのトラフィックはわずかに増加したのみです。

topコマンドを実行した後、MySQLが160%のCPUを使用していることが分かりました!

最近、テーブルを最適化し、持続的接続に切り替えました。 これがMySQLが大量のCPUを使用する原因になっているのでしょうか?

解決方法を教えてください。

まず最初に、持続的接続をオフにすることをお勧めします。

次に、MySQLのユーザーをダブルチェックして、リモートサーバーから接続される可能性がないことを確認したいと思います。これもセキュリティ上、重要なチェック項目です。

3つ目は、「Security(セキュリティ)」を有効にすることです。 MySQLのスロークエリ 長時間かかっているクエリを監視し、キーテーブルを長時間ロックしているクエリがないことを確認するためにログを使用します。

その他にも、CPU負荷が高い状態で以下のクエリを実行することでも確認できます。

SHOW PROCESSLIST;

これは、現在実行中の、あるいは実行待ちのクエリ、そのクエリが何であるか、何をしているかを表示します(このコマンドは、クエリが長すぎる場合は切り捨てますので、SHOW FULL PROCESSLISTを使用してクエリ全体のテキストを見ることができます)。

また、バッファーのサイズなどにも気を配りたいものです。 テーブルキャッシュ , クエリキャッシュ innodb_buffer_pool_size (innodb テーブルを使用している場合) これらのメモリ割り当てがクエリパフォーマンスに影響を与え、MySQL が CPU を消費する原因となる可能性があるからです。

また、以下の記事も良い情報を含んでいるので、一読しておくとよいでしょう。

また、プロファイラーを使うのも非常に良いアイデアです。アプリケーションの実行中のクエリ、クエリの重複、所要時間などを表示するもので、好きなときにオンにすることができます。このようなものの例としては、私が取り組んでいる PHPプロファイラ が、世の中にはたくさんあります。Drupal、Joomla、Wordpressなどのソフトウェアを使用している場合は、手動で何かを統合する必要なくこの情報を取得できるモジュールが利用できるかもしれないので、コミュニティ内で尋ねてみるとよいでしょう。