• 締切済み

WEBアプリケーションでレスポンスが帰る前に再度リクエスト投げるとサーバに高負荷がかかるのはなぜ?

業務用WEBアプリケーションを保守しています。 クライアント端末(WindowsXP IE6)で リクエストとなるボタンをクリックしてから ブラウザにレスポンスが返るまでに 複数回クリックすると(ダブルクリックなど) アプリケーションサーバのCPU使用率が急上昇し ついには100%になってしまう現象に悩まされています。 アプリケーションはJAVAでサーバはSun Java System application server 9を使っています。 CPU使用率が急上昇するときはそのjava.exeが占めています。 普段50クライアントほどがアクセスしているのですが java.exeはたまに70%近くまで占めるときがありますが ほとんど数パーセントで遷移しています。 メモリは常時80%ほど使っています。 ハード的にめいっぱい積んでいます。 WEBアプリケーションが乗っている同じ端末に データベースも同居しています。MySQLです。 mysql.exeは上記高負荷のときも普段とCPU使用率は さほど変わりません。 一度クリックされたらボタンを非活性にするスクリプトを入れていますが、高速で(?)複数回クリックされるときかないようです。 なぜなのか原因がわかれば別の対策を考えるのですが ご存知の方がいらっしゃればご教示願いたいです。

  • royee
  • お礼率21% (5/23)

みんなの回答

  • arain
  • ベストアンサー率27% (292/1049)
回答No.1

どれか一つの問題を上げろというならば、JAVAで動作しているシステムの作り方の問題の可能性が高いです。 リアルタイムシステムは、基本的には一つのイベント(処理)が終わってから次を行うのではなく、要求されたイベントに対して優先順位の高い順に処理を行います。 つまり、処理を行っている時にも複数の処理を受け付けることができることになります。 そのため、ソフトはあるイベントを処理中に別のイベントが発生した場合にどう処理を行うかを十分に検討する必要がありますが、その設計不十分な場合余計な処理を行うことにより高付加がかかる可能性があります。 この設計の不備が最悪のケースで現れればシステムフリーズやデータベース破壊という致命的なバグとして顕在化することになります。

royee
質問者

補足

回答ありがとうございます。 まさにシステムフリーズ→コンテナ再起動の悪循環、最悪ケースです。。。 JAVAではJSF、Hibernateを採用しています。 >ソフトはあるイベントを処理中に別のイベントが発生した場合にどう処理を行うか について開発側は特に意識していないようです。 やはり「設計不十分」ということになるのですね・・・ Sun Java System Application Server、(Apache内包)のチューニングでどうにかならないかと奮闘中です。

関連するQ&A

  • WebサーバとWebアプリケーションサーバについて

    自分なりに調べたのですが、 WebサーバはIIS、apacheといったもので、 WebアプリケーションサーバはWeblogic、tomcatといったものみたいですが。 どのような時にはどちらを用いるなどそれぞれの違いについて教えていただけますか。 WebサーバとWebアプリケーションサーバの違いですが、 WebアプリケーションサーバはJAVAやOracleなどを乗せたいときに使用するという認識でよろしいでしょうか。 Webサーバとは通常パソコンを購入して、XPやWindows7などはIISが備えられているという認識でよいのでしょうか。 IISは、FTPやSMTPゆIMAPなどの機能を統合したWebサーバであることは理解できたのですが。

    • ベストアンサー
    • PHP
  • サーバー上で、動く複数のアプリケーションの連携方法

    サーバー上で、動く複数のアプリケーションの連携の仕方 最近、Webアプリの勉強を始めたばかりの者です。 家の中にサーバーを構築し、自分にとって役立つアプリケーションを走らせようと考えています。 (ネット上に一般公開はしません) その際に行いたいのが、複数のアプリケーションの連携です。 例を挙げますと WindowsOS上で、ApacheなどのWebサーバーが走っていたとします。 クライアントからの要求に応じて、 指定されたBMPファイルを、webアプリケーションが、Paintなどのexeを実行して開くといった具合です。 この仕組みを作るには、どうしたらよいのでしょうか。 標準的なやり方は存在するのでしょうか? CentOS上ならこう出来るといった回答でも構いません。 以上、宜しくお願いいたします。

  • Webアプリケーションについて

    社内LANのみでWebアプリケーションを作成しようと考えています。 この場合、どのような環境がよろしいでしょうか? 私なりに考えたものは、 CentOS PHP MySQL Apache かなと思いますが、いかがでしょうか? クライアントはすべてWindows PC です。 ちなみに、すでにWindowsServer機がありまして、ファイルサーバ等として動いています。 これとは別にWebアプリ用のサーバを置こうと考えています。 運用やセキュリティなど素人ですので、どのような構成がいいかがわかりません。 ご指導よろしくお願いいたします。

  • サーバ上でアプリケーションを使うとき

    あるアプリケーションを職場で使用するのですけど、 アプリケーションを各PCに置くかサーバーに置くか迷っています。 LANで繋がったサーバPC上にアプリケーションの実行ファイルを保存して クライアント(別のPC)でそれを実行する場合どのような処理になるのでしょうか? 例えば処理速度はサーバPCクライアントPCどちらのPCに依存しますか? 複数の人が同時に実行した場合サーバーPCの負荷は増えますか? なるべく処理の中身が分かるように教えていただけると助かります。

  • サーバからレスポンスが戻ってこない??

    VB.2005でASP.NETのWEBアプリを開発しております。 WEB上でボタンを押し、process.start("test.exe")にてBinフォルダ下の外部exeを起動する処理をしているのですが、起動がうまくいき終了しているのですが、なぜか右下のゲージがゆっくり進んだままレスポンスが帰ってこないという現象が起こっています。 環境はWindows2003ServerでIIS6.0で行っております。 クライアントのWindowsXP上ではうまくいっております。 なにか原因になるものはあるでしょうか??

  • ■SOAPを使ったwebアプリケーションについて質問です

    ■SOAPを使ったwebアプリケーションについて質問です 現在、SOAPを利用したJavaでのクライアントーサーバ間のwebアプリケーションを作成しようとしています。 やりたいことは下記の通りです。 1、クライアント側でSOAP本体を自前で作成し、それをサーバプログラムに送信する。 2、サーバで受け取ったSOAPメッセージを解析し、応答メッセージを作成する。 3、作成した応答メッセージをクライアントへ返す。 使用する環境は Java 1.6 Apache 2,2 Tomcat 6.0 Axis2(不要なら使わない予定) です。 上記のアプリケーションを作成するには具体的にどのようなソースになるか ネット上でも調べてみたのですが見つからず困っております。 有識者の方、どうかご教授願いますでしょうか。

  • アプリケーションサーバ

    Windows2000 Serverはアプリケーションサーバとして走らせることができるのでしょうか? Adobe PhotoshopやIllustratorを一台のマシンにインストールして複数のクライアントからアプリケーションを起動する、ということがWindows2000Serverで可能なのでしょうか? もし可能な場合、その設定方法などを紹介しているサイトなどご存知でしたらよろしくお願いいたします。

  • WEBページからアプリケーションを起動する方法

    現在ASPを使用したWEBアプリケーションを作成中です。 そこで質問なのですが、 WEBページからVBで作成したアプリケーションを起動させる方法について教えていただけないでしょうか。 方法は、HTMLかJavaScript、ASP、VBScript のいずれかで、 WEBページ内に、JavaアプレットのようにExeを埋め込むか、 リンクをクリックすると、Exeが起動するような形がよいのですが。。 リンクを素で貼り付けたのですが、ダウンロードしますか?というメッセージが出てしまうので。。(当然かもですが;) 初心者のような質問で申し訳ないのですが、よろしくお願いします。 クライアントはWindowsマシン、IEブラウザ限定でもかまいません。 Exeはローカル内のExeです><

  • サーバー/クライアント アプリケーションとしての運

    http://support.microsoft.com/default.aspx?SCID=kb;ja;882219&sd=offn 「Access はデスクトップ アプリケーションのため、 サーバー/クライアント アプリケーションとしての運用を行う場合は SQL Server を使用することをお勧めします。 」 「サーバー/クライアント アプリケーションとしての運用」とはどういうことでしょうか? 一人で使うならアクセス、 複数で使うならSQL Server の方が良いと言うことでしょうか?

  • Webサーバ経由で別のWebサーバにアクセス

    クライアントPCから、WebサーバAにアクセスし、WebサーバBのWebページを見たいです。 理由は、WebサーバBはWebサーバA(のIPアドレス)からのアクセスしか受け付けず、 クライアントから直接WebサーバBにアクセスできないためです。 WebサーバAにアプリケーションをインストールしたり、設定を変える権限はありますが、 できるだけアプリケーション側でそのようなことができるようにしたいです。 宜しくお願い致します。