- - PR -
Webアプリケーションが突然動かなってしまう
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-06-23 20:33
Win2000Server
.NetFramework1.1 ASP.NET & Oracle9i 現在ユーザーが.NETアプリケーションを使用していると、最初は正常に機能していたのが突然まったく動かなくなるか(×しか行うことができない)、アプリケーションエラーが発生するか、どちらかの現象が起きてしまいます。さらにその現象が起きてしまうと、再度実行しようとしてもアプリケーションが立ち上がらなくなってしまいます。 この現象は一人のユーザーのみ影響する場合もあれば、全体に影響してしまう場合もあります。 過去ログを調べたのですが「aspnet_wp.exe」が肥大化してしまい、アプリケーションに影響を及ぼしていることは分かったのですが、「aspnet_wp.exe」が肥大化していなくても同じ現象が出てしまうこともあります。 タスクマネージャーにある「aspnet_wp.exe」のプロセスを終了すると復旧することは分かったのですが、しばらくすると再び同じ現象が出てしまいます。 そもそも「aspnet_wp.exe」に影響している個所をまだはっきりとは掴めておらず、今は「Oracle」のConnectionの回数が異常に多いことか原因かと思い、そこの修正を行っています。 現在のシステムのプログラムですが、各画面の処理の中でConnectionを発行している回数が、ある処理ではひとつのプロシージャー内で7,80回Connectionの発行、開放を繰り返しているところもありました。処理時間は5〜10秒くらいです。 アクセスの多い画面を最優先して修正を完了し、コネクションの発行回数もページロード時は3回で、その他の処理も1,2回で済ましていますが、現象は改善されていません。 まだ全ての修正が終わったわけではないのですが、「aspnet_wp.exe」が影響している事くらいしか原因が掴めていないため、的はずれな対応をしているのかもしれません。 大変困っている状況ですので、原因や対策がわかる方がおられましたら是非ご協力お願いいたします。 | ||||||||||||
|
投稿日時: 2005-06-24 22:32
大変お困りであることはわかりますが、原因がつかめていないのに、遠隔地&文字だけのコミュニケーション&即時性がないところで解決を図ろうとするのは、間違っていると思います。 勘違いされているように思いましたので申し上げますが、「aspnet_wp.exe」が障害に影響しているのではなく、お作りになったプログラムが「aspnet_wp.exe」に影響を与えて、障害を出しています。その辺を取り違えていると、障害の原因から遠ざかってしまいます。 _________________ | ||||||||||||
|
投稿日時: 2005-06-25 08:20
話の内容から察するに、ASP.NETアプリケーションの中でデッドロックしているだけではなくて?
その場合はaspnet_wp.exeが自動的に再起動され、イベントログにエラーの内容が記録されるでしょう。
それが原因で停止するとは思えません。コネクションプールを使っているんですよね? ちなみに特に明記されていませんが、ODP.NETを使っているんですよね? _________________ 甕星 <mikahosi@abox9.so-net.ne.jp> http://blogs.msmvp.jp/mikahosi/ [ メッセージ編集済み 編集者: 甕星 編集日時 2005-06-25 08:22 ] | ||||||||||||
|
投稿日時: 2005-06-25 17:13
Jittaさん、甕星さん書き込みありがとうございます。
Jittaさん >勘違いされているように思いましたので申し上げますが、「aspnet_wp.exe」が障害に影響しているのではなく、お作りになったプログラムが「aspnet_wp.exe」に影響を与えて、障害を出しています。その辺を取り違えていると、障害の原因から遠ざかってしまいます。 Jittaさんのご指摘どおりプログラムが影響を与えているのだと思います。 私の場合は、正常に処理が行われていた個所が、同等の処理を繰り返していると突然動きが止まってしまうので、「aspnet_wp.exe」に関係するサーバーの設定に何か不都合があるのではないかと思っていました。 甕星さん >話の内容から察するに、ASP.NETアプリケーションの中でデッドロックしているだけではなくて? タスクマネージャーを調べると、「aspnet_wp.exe」のCPUが100%になっている場合と、そうではなく正常の状態のままの場合とあります。 CPUが100%のなっているときは、全ユーザーが使用できない状態になってしまうのですが、正常の状態の場合、一人のユーザーだけ止まってしまい、他のユーザーは正常に処理を行うことが出来ています。 >その場合はaspnet_wp.exeが自動的に再起動され、イベントログにエラーの内容が記録されるでしょう。 現象が起きるたびにイベントビュアーを調べたのですが、手動でプロセスを終了したログ以外は確認することが出来ませんでした。 「デッドロック」になった場合は、必ずイベントログに書かれるものなのでしょうか? >それが原因で停止するとは思えません。コネクションプールを使っているんですよね? ちなみに特に明記されていませんが、ODP.NETを使っているんですよね? オラクルのバージョンが9.0のため「ODP.NET」を使用することは出来ませんでした。 ASP.NETでオラクルを使用する場合、「ODP.NET」は必ず入れるべきものなのでしょうか? | ||||||||||||
|
投稿日時: 2005-06-25 18:58
通常は勝手に再起動して、イベントログに書き込まれるはずです。もしかしたら、デッドロックを検出する前に貴方が手動で止めてしまっているのかもしれませんが。
Oracle9.2.0からODP.NETを使えるはずですけど・・・ 9.0って、もしかしてOracleのパッチすら、当ててない?(^^; | ||||||||||||
|
投稿日時: 2005-06-25 21:05
>Oracle9.2.0からODP.NETを使えるはずですけど・・・
9.0って、もしかしてOracleのパッチすら、当ててない?(^^; 9.0が9.2になるパッチがあるのですか? 現在のオラクルにはパッチは当てていません。 あと、私が一番気になっていることなのですが「aspnet_wp.exe」が「デッドロック」の状態になる時というのはどのような事象を起こした時なのでしょうか? やはりオラクルは関係しているのでしょうか? | ||||||||||||
|
投稿日時: 2005-06-26 09:17
9.0.x 系から、9.2.x 系になるパッチはないでしょう。 製品のアップグレードになるとおもいます。 | ||||||||||||
|
投稿日時: 2005-06-26 10:10
うぁ、ごめんなさい勘違いしてました。 Release1(9.0.x)とRelease2(9.2.x)って別の製品でしたね。
responseDeadlockIntervalで指定した時間アイドル状態が続いたとき・・・となっていますが、実質的な検出ロジックは分からないです。
分からないです。ODP.NETを使っていないとすると、何を使っているのでしょう? Microsoft DataProvider for ORACLE?それともfor ODBC?もしかしてfor OLE? Oracleにはデータベースのデッドロックを検出して、強制的にRollbackする機能がありますよね。データベース内でデッドロックしているとは考えにくいです。原因があるとしたら、ASP.NETのアプリケーションのほうでしょう。 まずはログを取るなりして、もう少し原因の絞込みをするしかないんじゃないかな。 |