- PR -

Webアプリケーションが突然動かなってしまう

投稿者投稿内容
やす
会議室デビュー日: 2005/03/16
投稿数: 6
投稿日時: 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」が影響している事くらいしか原因が掴めていないため、的はずれな対応をしているのかもしれません。

 大変困っている状況ですので、原因や対策がわかる方がおられましたら是非ご協力お願いいたします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-06-24 22:32
引用:

最初は正常に機能していたのが突然まったく動かなくなるか(×しか行うことができない)、アプリケーションエラーが発生するか、どちらかの現象が起きてしまいます。さらにその現象が起きてしまうと、再度実行しようとしてもアプリケーションが立ち上がらなくなってしまいます。
 この現象は一人のユーザーのみ影響する場合もあれば、全体に影響してしまう場合もあります。

 そもそも「aspnet_wp.exe」に影響している個所をまだはっきりとは掴めておらず、今は「Oracle」のConnectionの回数が異常に多いことか原因かと思い、そこの修正を行っています。

 まだ全ての修正が終わったわけではないのですが、「aspnet_wp.exe」が影響している事くらいしか原因が掴めていないため、的はずれな対応をしているのかもしれません。


 大変お困りであることはわかりますが、原因がつかめていないのに、遠隔地&文字だけのコミュニケーション&即時性がないところで解決を図ろうとするのは、間違っていると思います。

 勘違いされているように思いましたので申し上げますが、「aspnet_wp.exe」が障害に影響しているのではなく、お作りになったプログラムが「aspnet_wp.exe」に影響を与えて、障害を出しています。その辺を取り違えていると、障害の原因から遠ざかってしまいます。
_________________
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-06-25 08:20
引用:

やすさんの書き込み (2005-06-23 20:33) より:
現在ユーザーが.NETアプリケーションを使用していると、最初は正常に機能していたのが突然まったく動かなくなるか(×しか行うことができない)、アプリケーションエラーが発生するか、どちらかの現象が起きてしまいます。さらにその現象が起きてしまうと、再度実行しようとしてもアプリケーションが立ち上がらなくなってしまいます。


話の内容から察するに、ASP.NETアプリケーションの中でデッドロックしているだけではなくて?

引用:

 過去ログを調べたのですが「aspnet_wp.exe」が肥大化してしまい、アプリケーションに影響を及ぼしていることは分かったのですが、「aspnet_wp.exe」が肥大化していなくても同じ現象が出てしまうこともあります。


その場合はaspnet_wp.exeが自動的に再起動され、イベントログにエラーの内容が記録されるでしょう。

引用:

 現在のシステムのプログラムですが、各画面の処理の中でConnectionを発行している回数が、ある処理ではひとつのプロシージャー内で7,80回Connectionの発行、開放を繰り返しているところもありました。処理時間は5〜10秒くらいです。


それが原因で停止するとは思えません。コネクションプールを使っているんですよね?
ちなみに特に明記されていませんが、ODP.NETを使っているんですよね?


_________________
甕星 <mikahosi@abox9.so-net.ne.jp>
http://blogs.msmvp.jp/mikahosi/

[ メッセージ編集済み 編集者: 甕星 編集日時 2005-06-25 08:22 ]
やす
会議室デビュー日: 2005/03/16
投稿数: 6
投稿日時: 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」は必ず入れるべきものなのでしょうか?
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-06-25 18:58
引用:

やすさんの書き込み (2005-06-25 17:13) より:
Jittaさん、甕星さん書き込みありがとうございます。

>その場合はaspnet_wp.exeが自動的に再起動され、イベントログにエラーの内容が記録されるでしょう。

現象が起きるたびにイベントビュアーを調べたのですが、手動でプロセスを終了したログ以外は確認することが出来ませんでした。
「デッドロック」になった場合は、必ずイベントログに書かれるものなのでしょうか?


通常は勝手に再起動して、イベントログに書き込まれるはずです。もしかしたら、デッドロックを検出する前に貴方が手動で止めてしまっているのかもしれませんが。

引用:

オラクルのバージョンが9.0のため「ODP.NET」を使用することは出来ませんでした。
ASP.NETでオラクルを使用する場合、「ODP.NET」は必ず入れるべきものなのでしょうか?


Oracle9.2.0からODP.NETを使えるはずですけど・・・
9.0って、もしかしてOracleのパッチすら、当ててない?(^^;
やす
会議室デビュー日: 2005/03/16
投稿数: 6
投稿日時: 2005-06-25 21:05
>Oracle9.2.0からODP.NETを使えるはずですけど・・・
9.0って、もしかしてOracleのパッチすら、当ててない?(^^;

9.0が9.2になるパッチがあるのですか?
現在のオラクルにはパッチは当てていません。

あと、私が一番気になっていることなのですが「aspnet_wp.exe」が「デッドロック」の状態になる時というのはどのような事象を起こした時なのでしょうか?
やはりオラクルは関係しているのでしょうか?
せん
ぬし
会議室デビュー日: 2002/03/04
投稿数: 397
投稿日時: 2005-06-26 09:17
引用:

やすさんの書き込み (2005-06-25 21:05) より:
>Oracle9.2.0からODP.NETを使えるはずですけど・・・
9.0って、もしかしてOracleのパッチすら、当ててない?(^^;

9.0が9.2になるパッチがあるのですか?
現在のオラクルにはパッチは当てていません。



9.0.x 系から、9.2.x 系になるパッチはないでしょう。
製品のアップグレードになるとおもいます。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-06-26 10:10
引用:

やすさんの書き込み (2005-06-25 21:05) より:
9.0が9.2になるパッチがあるのですか?


うぁ、ごめんなさい勘違いしてました。
Release1(9.0.x)とRelease2(9.2.x)って別の製品でしたね。

引用:

あと、私が一番気になっていることなのですが「aspnet_wp.exe」が「デッドロック」の状態になる時というのはどのような事象を起こした時なのでしょうか?


responseDeadlockIntervalで指定した時間アイドル状態が続いたとき・・・となっていますが、実質的な検出ロジックは分からないです。

引用:

やはりオラクルは関係しているのでしょうか?


分からないです。ODP.NETを使っていないとすると、何を使っているのでしょう?
Microsoft DataProvider for ORACLE?それともfor ODBC?もしかしてfor OLE?

Oracleにはデータベースのデッドロックを検出して、強制的にRollbackする機能がありますよね。データベース内でデッドロックしているとは考えにくいです。原因があるとしたら、ASP.NETのアプリケーションのほうでしょう。

まずはログを取るなりして、もう少し原因の絞込みをするしかないんじゃないかな。

スキルアップ/キャリアアップ(JOB@IT)