人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

mysqlのCPU負荷で悩んでいます。mysqlのCPU負荷をtopコマンドで見ているのですが、数%?10数%だったのが、急に50%になったり110%になったりするのですが、これは普通なのでしょうか?それともmysqlのチューニングなどが悪いのでしょうか?あまりに抽象的な質問であることは承知していますので、分かる範囲での情報や参考になりそうな情報をお教え頂ければ幸いです。

●質問者: MrB
●カテゴリ:コンピュータ インターネット
✍キーワード:CPU MySQL TOP これは普通 コマンド
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● うぃんど
●50ポイント ベストアンサー

数値とCPUの状態をざっくりと書きますと以下になります

低い数値 特に仕事もせずにプラプラとしている暇な状態
瞬間的に高い数値 仕事をしている状態
高い数値が続いている状態 CPUはいっぱいいっぱいな状態で仕事を続けている(処理が重過ぎる)

急に数値が上がっただけで、すぐに数値が下がるようであれば、特に心配することはありませんが、数値が上がりっぱなしになるようであれば計算能力が追いついていないということになりますので、MySQLに行わせる仕事の量を減らすか、パソコンの処理能力をあげてやる(メモリ増設や高速なHDDへの置換、パソコンまるごと高性能なものに交換など)してやらなければなりません

以下、蛇足です

データベースで足かせになるのは、HDDとのやりとりになりますので、Linuxのようにファイルキャッシュなど調整できるOSであれば調整をすることで劇的に改善する場合もあります(Windowsの場合は細かいメモリの利用割り当てなどは出来ませんので次に進みます)

OSの設定のような難しいことをせずとも、OS/MySQL共にデフォルトの設定でもまぁまぁの性能はでるようになってますので、インデックスを適切に設定したり、SQLはなるべく簡単な処理を行うようにして、さらには取得するレコード数を絞ったりするなどといった工夫をするだけで段違いな性能を示すようになります。難しいことを考えずシンプルなデータベースの構造とSQLを作成することを心がけてみてください

◎質問者からの返答

丁寧な回答ありがとうございます。

昼間は瞬間的に高いだけなのですが、夜の21時?24時くらいまでは高い数値が続いたりします。

自分ではシンプルなSQLを書いているつもりですが、もういちどSQLなどを見直してみます。


2 ● iQuest
●30ポイント

状況が分からないのですが、topコマンドと言うことはLinuxをご利用ですよね。

  1. そのMySQLサーバはインターネットに公開しているのでしょうか?
  2. そのMySQLサーバに同時接続しているクライアント数はどのくらいなのでしょうか?

ご確認ください。


MySQLの負荷状況を調べるには、mysqladmin コマンドを利用し

mysqladmin status -u ユーザー名 -p

を実行してみてください。

MySQLサーバの細かいステータスが表示されます。各々のパラメータの読み方は、「ステータス変数」を参考にしてください。

とくに、Connectionsの数と、Aborted_clients が発生していないかどうかご確認ください。

◎質問者からの返答

ご回答ありがとうございます。

インターネットに公開していて、サイトを利用しているユーザーが3万人程度います。

statusを見ると、Connectionsは747584、Aborted_clientsは0、Max_used_connectionsは21となっています。


3 ● taroe
●10ポイント

analyze table を試してみては?

インデックスが効果的に使われてないのかもしれません。

高負荷になってるときに、どのようなSQL文は実行されてるのかとかわかるともっと詳細がわかるようになると思います。

◎質問者からの返答

ご回答ありがとうございます。

analyze tableを試したのですが、あまり変わらなかったです。

再度、SQLの見直しをしてみます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ