最近、サーバーのCPUが非常に高くなっています。
CPU負荷の平均は13.91(1分)11.72(5分)8.01(15分)で、私のサイトのトラフィックはわずかしか増加していません。
topコマンドを実行した後、MySQLが160%のCPUを使用していることがわかりました。
最近、テーブルを最適化していて、永続的な接続に切り替えました。これにより、MySQLで大量のCPUが使用される可能性がありますか?
最近、サーバーのCPUが非常に高くなっています。
CPU負荷の平均は13.91(1分)11.72(5分)8.01(15分)で、私のサイトのトラフィックはわずかしか増加していません。
topコマンドを実行した後、MySQLが160%のCPUを使用していることがわかりました。
最近、テーブルを最適化していて、永続的な接続に切り替えました。これにより、MySQLで大量のCPUが使用される可能性がありますか?
回答:
まず、永続的な接続を無効にすることをお勧めします。永続的な接続は、ほとんどの場合、害を及ぼすよりも害が大きいためです。
次に、MySQLユーザーを再確認したいのですが、リモートサーバーから誰も接続できないようにするためです。これは、確認する必要のある主要なセキュリティ項目でもあります。
3番目に、MySQLスロークエリログをオンにして、時間がかかっているクエリを監視し、クエリを使用してキーテーブルが長時間ロックされないようにすることをお勧めします。
チェックできる他のいくつかのことは、CPU負荷が高いときに次のクエリを実行することです。
SHOW PROCESSLIST;
これにより、現在実行中のクエリ、または実行するキューにあるクエリ、クエリの内容、および実行中のクエリが表示されます(このコマンドは、クエリが長すぎる場合はクエリを切り捨てます。SHOWFULL PROCESSLISTを使用して完全なクエリテキストを表示できます)。 。
また、これらのすべてのメモリ割り当ては、MySQLを引き起こす可能性があるクエリのパフォーマンスに影響を与える可能性があるため、バッファサイズ、テーブルキャッシュ、クエリキャッシュ、およびinnodb_buffer_pool_size(innodbテーブルを使用している場合)などにも注意が必要です。 CPUを使い果たします。
また、いくつかの優れた情報が含まれているため、おそらく以下を読み返してください。
プロファイラーを使用することも非常に良い考えです。必要なときにオンにできるもので、アプリケーションが実行しているクエリ、重複するクエリがある場合、それらがかかっている時間などを示します。このような例は、私が取り組んできたものの1つです。PHPプロファイラーですが、世の中にはたくさんあります。Drupal、Joomla、Wordpressなどのソフトウェアを使用している場合は、コミュニティ内で質問することをお勧めします。手動で何も統合しなくても、この情報を取得できるモジュールが利用できる可能性があるためです。
これは、MySQLの高CPU使用率または負荷をググった場合のトップポストであるため、追加の回答を追加します。
2012年7月1日、現在のUTC時間にうるう秒が追加され、潮による地球のゆっくりとした回転を補正しました。ntp(またはntpd)を実行すると、この秒がコンピューター/サーバーのクロックに追加されました。MySQLdは、一部のOSではこの余分な秒を気に入らないようで、高いCPU負荷をもたらします。クイックフィックスは(rootとして):
$ /etc/init.d/ntpd stop
$ date -s "`date`"
$ /etc/init.d/ntpd start
date
" && service ntp start MySQLのCPU使用率が50〜100%から0〜1%に即座に低下
sudo service ntpd stop
この構成で使用します。
このサーバーが外の世界から見える場合は、外の世界から接続するためのリクエストがたくさんあるかどうか(つまり、侵入しようとしている人)を確認する価値があります。