• ベストアンサー

FreeBSDのTOPコマンドの結果で、ある処理を実行するとmysql

FreeBSDのTOPコマンドの結果で、ある処理を実行するとmysqldのWCPUが300%近くまで跳ね上がります。処理が終了すると30%あたりまで減少します。WCPUが300%になるということがどういうことなのか、詳しくわかりません。負荷が掛かっていることはわかりますが、常時でなければ問題ないのでしょうか? ご教授、よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.2

ちょい今時間が無いので簡単な回答で失礼します。 > ロードアベレージは「ある処理」を実行すると6,7,8あたりになります。 > CPUは、Xeon E5410 2.33GHz Quad Core でメモリは、4GB構成です。  4CPUでロード8というのはなかなか苦しんでますね。ロードというのは、簡単に言うと「CPUが使える場合はすぐCPU処理に入る事ができるプロセス数」で、それを1分、5分、15分など単位時間ごとに平均値を出したものがロードアベレージになります。つまり、(I/O処理などが終わって)CPUを使いたいのにCPUがあかないからあくのをずーっと待ってる人たちの数(+今CPUを使っている人たちの数)です。ひょっとしたらI/O待ちの人たちも含んでいるかも知れません。この辺は確かTOPコマンドや/procの仕様によるものだったと思います。  なので、CPUが100%でかつロードアベレージがCPU数を超えると、CPUが足りない状況だ、という事になります。余談ですがCPUが100%でロードアベレージ=CPU数という場合、CPU(演算処理装置)というリソースを余すことなく有意義に使い、かつCPUが一切ボトルネックになっていないという理想的な状況となり、これが「CPU100%=負荷が高すぎるとは一概に言えない」理由です。  ただ、そのような「ある処理」が、ピーク時にもバンバン実行されるようなシステムだとまずいですが、月次締めで月に1回や週に1回、それも深夜の時間帯に1回実行、などであればまぁ問題ないのではないかと。  後、補足というのは、回答者が質問の内容が分からない、あるいはもっと聞きたいという時に「○○についてくわしく」ですとか、「○○の設定はどうなってる?」ですとか、そういう逆質問をして、質問者がその返答を書く欄のようです。私は質問をした事はないので詳しい事は分かりませんが。

levokyo
質問者

お礼

anmochi様 重ねてお礼を申し上げます。ロードアベレージのところまで解説頂き勉強になりました。 なかでも、CPU数によりロードアベレージの見方が違うとは、知りませんでした。 お忙しいなか、誠にありがとうございました。

その他の回答 (1)

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

 その「ある処理」なる処理が頻繁に行われるのであれば問題があるかも知れませんが、それはケースバイケースとしか言いようが無いですね。  ただ、CPUを使いまくっているというのは、その「ある処理」がいたずらに高負荷になるようなヘタなものでない限りは、リソースを精一杯使うという意味では理想と言えます。これもケースバイケースですが、TOPコマンドの右上にロードアベレージなる項目があるかと思います。負荷試験でもなんでも良いと思いますので、その「ある処理」を連続、または並列で動作させた場合にCPUが張り付くと共にロードアベレージがCPUコア数を超えないか注意深く観察してください。どんなに並列で走らせてもロードアベレージがCPUコア数を超えないのであれば(I/Oがボトルネックになっている場合を除いて)ざっくりですがほぼ問題は無いと見て良いでしょう。

levokyo
質問者

お礼

anmochi様、重ねてお礼を申し上げます。 OKWAVEの仕組みがあまり、よくわからない初心者なのでanmochi様の返答に補足をさせていただきました。ただ、お礼をしなければと思い、こちらでもお礼を申し上げます。 専門家のご意見、ありがとうございました。非常に理解できました。

levokyo
質問者

補足

anmochi様、ご返答ありがとうございました。 文面からもうかがえる専門家のご意見で非常に理解できました。 補足として付け加えさせて頂くと、ロードアベレージは「ある処理」を実行すると6,7,8あたりになります。CPUは、Xeon E5410 2.33GHz Quad Core でメモリは、4GB構成です。ロードアベレージが6,7,8あたりで、CPUがQuad Core。anmochi様にご指摘いただいている、CPUコア数を超えている状況になっています。CPUのメモリ増設を試みましたが、OSがFreeBSDでカーネルの再構築をしないと4GB以上を認識しないようで失敗に終わりました。サーバ自体をCentOSでリプレースしてメモリを16GBにしようかとも思っています。

関連するQ&A

  • mysqlでmyisamchkが実行できない

    FreeBSD4.4+mysql3.23.54を利用しています。 mysqlでの負荷が高いとのサーバー管理者からの問い合わせを受けmyisamchkの実行を行って欲しいと言われております。 しかし、mysqlshowやmysqladminを実行できるのですが、mysqladminを実行しても「command not found」と表示され受け付けてくれません。どうしたらこのコマンドを受け付けてくれるのでしょうか?

  • コマンド実行時の結果のリダイレクト

    お世話になっております。 【環境】 作業マシン:WINDOWS Server2008 (仮想) 開発ツール:VWD2010(VB) 使用DB:SQLServer2008R2 Webフォームにてアプリを開発しております。 ASP.NET VBでの開発の経験はおおよそ4ヶ月程です。 【質問内容】 コマンド実行し、その際プロンプトに表示される結果文字列を、 下記を参考に取得しています。 http://dobon.net/vb/dotnet/process/standardoutput.html 実行しているのは処理終了までに5分くらい掛かるexeで、 10秒毎に現在の処理進捗率を吐きます。 ですが現在はプロセスが終了するまで結果の参照ができません。 参考URL先にあります、 [プロセス名].StandardOutput.ReadToEnd この取得方法ではプロセスの終了まで待たねばなりません。 完了していないプロセスのoutput を参照するには どのようにすればよいのでしょうか。 何卒ご教授下さい。

  • コマンドラインで実行時に

    はじめまして。下記現象が起こり困っております。 ご存知の方がいらっしゃいましたら回答お願い致します。 データをダウンロードするphpプログラムを コマンドラインから実行すると、最初は問題なく 進むのですが、データ件数が増えてくると "強制終了"と表示されて、プログラムが途中で 終了されてしまいます。 データ件数が多いので、負荷はかかっているとは 思うのですがメモリを確認してみると、特に 使い切っている感じではありませんでした。 またログ出力すると終了させられる直前まで、 プログラム実行当初と同じ間隔で処理が進んでいます。 そこで原因追求のため、どういう時にこの"強制終了" が出力されるのか、また、強制終了時にシステムログ などが出力されている場合、どこに保存されているの かお教え頂きたく質問させて頂きました。 尚、実行環境は以下です。 LINUX:Red Hat Linux 7.2 apache:2.0.52 php:4.3.11 postgresSQL:7.4.6 ダウンロード件数:50万件 何卒宜しくお願い致します。

  • コマンドプロンプトの実行

    こんにちは 先日Ipconfigを教えていただきまして、コマンドプロンプトから実行しています。 手順としては 1.コマンドプロンプトを起動する 2.Ipconfigをパラメータつきで実行 3.Ipconfigを別パラメータつきで実行 4.コマンドプロンプトを終了 となります。 これを予めコマンドプロンプトで実行させたい内容を書き込んだファイルを作っておき、 そのファイルをデスクトップ上とかに置き、クリック実行してコマンドプロンプトの処理を実行させる、ということができないでしょうか。 以上、よろしくお願いいたします。

  • スレッド処理内での終了結果を知りたい

    VC++6.0(SP5)を使って、コマンドプロンプトのような処理を作成しています。  1.CreateProcess()でMS-DOSプロンプトを起動  2.CreatePipe()で実行コマンドの読み取り/終了監視スレッド用ハンドル作成  3.CreateThread()で実行コマンドの読み取り/終了監視スレッド作成  4.WriteFile()、ReadFile()を使っています。 'Dir'コマンド等を実行した際、通常プロンプトに表示されるメッセージを 読み取れてエディットボックスに表示できるのですが、異常/正常に関わらず 終了した時を取得したいのですが・・・。  (詳細)  1.WriteFile()を使って'Dir'コマンド実行  2.実行コマンドの出力が完了←この時点でコマンドプロンプトを終了させたい   ※WriteFile()関数の実行終了ではなく、'Dir'コマンド実行終了を知りたい 何方かご教授お願いします。

  • シェルの実行中にユーザ切り替えてコマンド実行

    はじめまして。 シェル初心者です。 shell.shをrootユーザでクーロン実行していますが、 shell.shの処理の中で、違うユーザでコマンド実行したいのですが、 可能かどうかも、方法が分かりません。 教えていただけないでしょうか。 環境はLinuxです。 下記のコマンドを実行したいです。 リモートでログインしてコマンド実行結果を取得する ssh -l tomcat server_tomcat grep test /tmp/test.log ※他のユーザでsshを実行してコマンド結果を取得したいです。 以上。宜しくお願い致します。

  • コマンドを実行してコマンドライン文字列を読み込む

    C言語(他の言語でも)で、コマンドを実行して結果の文字列を取得できるような関数はないでしょうか? コマンドを実行したプログラム内の変数に文字列として保持して、処理したいと考えています。 Windowsです。 よろしくお願い致します。

  • シェルスクリプトでバックグラウンドで実行したコマンドの実行結果を取得するには

    OS redhat linux シェル bornシェル シェルスクリプトでバックグラウンドで複数のコマンドを実行し、 すべてのコマンドが正常に終了したら次の処理へ進むみたいな事をしたいのですが、可能でしょうか? 直列にすればよいのですが、処理時間短縮の為、並列に処理したいのです。 宜しくお願いします。

  • crontabの実行結果を知るには

    いつもお世話になっております。 crontabの実行結果はどこかに記録されているのでしょうか?処理結果を出力しないコマンドを実行するように設定しているのですが、ちゃんと実行されているのか確認する方法が分かりません。 どうすれば実行されているか確認できるのでしょうか?

  • 子プロセスのコマンド結果

    pipe(),fork(),dup2()等を駆使し、子プロセスにコマンドを実行させる処理にて、 子プロセスの実行したコマンドが入力待ちか処理終了しているかを判定する方法ってありますで しょうか?