- PR -

HTTP500エラーの障害切り分けについて

投稿者投稿内容
焼きそば
ベテラン
会議室デビュー日: 2002/11/06
投稿数: 86
お住まい・勤務地: 東京
投稿日時: 2008-06-01 12:37
焼きそばです。

[環境] Win2003 Std Server
.Net Framework2.0 SPなし
ASP.NET2.0(VB2005)
ODP.NET 10.0.2
Oracle10g
IIS 6.0

で稼動させているWebアプリケーションがあります。
WebサーバとDBサーバは各1台ずつで構成されています。

通常はエラーもなく、普通に稼動しているのですが、
ごくまれにHTTP500エラーが発生し、
アプリケーションのログにはOracleConnection時に使用する
ConnectionStringが無効という例外がでます。

ConnectionStringはweb.configではない別のXMLから読み込んでいますが、
取得できたりできなかったりする原因がつかめません。

IISのログにはHTTPステータス 500 しか出ていませんし、
OSのシステムログには上記の例外しか出力されません。

現在はConnectionStringが取得できなかった場合に
再度取得するロジックで回避しておりますが、
根本的解決でないような気がしております。

アプリケーションに問題があるか、
IISの設定に問題があるかすら掴めていません。

ちなみに.Net2.0 SP1にしても同様の現象が発生しました。

原因の特定のためにも切り分けを行いたいのですが、
どこに着目すればよいか、皆様のアドバイスをいただきたいと思います。

以上、よろしくお願いいたします。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2008-06-01 13:07
引用:
ConnectionStringはweb.configではない別のXMLから読み込んでいますが、
取得できたりできなかったりする原因がつかめません。

ConnectionStringを使用している箇所でConnectionStringのログを書いて、エラーになったときの
ConnectionStringが何なのかを調べる(おそらく空文字とかでしょうね)。
その周辺の変数の値や、どこを通ってるかなどを把握するためにログを書く。とか。

あとは、ソースを追ってみるとか(十中八九プログラムの問題だと思いますので)。
特に、ファイルオープンの排他とか、大丈夫ですかね。(ただ、ファイルオープンでエラーに
なったらその時点で例外出ると思いますが。握りつぶしたりしてませんかね。)
焼きそば
ベテラン
会議室デビュー日: 2002/11/06
投稿数: 86
お住まい・勤務地: 東京
投稿日時: 2008-06-01 14:19
引用:

べるさんの書き込み (2008-06-01 13:07) より:

ConnectionStringを使用している箇所でConnectionStringのログを書いて、エラーになったときの
ConnectionStringが何なのかを調べる(おそらく空文字とかでしょうね)。
その周辺の変数の値や、どこを通ってるかなどを把握するためにログを書く。とか。

あとは、ソースを追ってみるとか(十中八九プログラムの問題だと思いますので)。
特に、ファイルオープンの排他とか、大丈夫ですかね。(ただ、ファイルオープンでエラーに
なったらその時点で例外出ると思いますが。握りつぶしたりしてませんかね。)



焼きそばです。

べるさん、ご返答ありがとうございます。

ConnectionStringは空文字で返ってきています。
ファイルオープンの排他については未調査ですので、
その点も明日、再度調査してみます。
焼きそば
ベテラン
会議室デビュー日: 2002/11/06
投稿数: 86
お住まい・勤務地: 東京
投稿日時: 2008-06-02 14:05
焼きそばです。

引用:

ConnectionStringは空文字で返ってきています。
ファイルオープンの排他については未調査ですので、
その点も明日、再度調査してみます。



上記調査しましたが、
XMLからインスタンス生成時に直接プロパティを読み込むように
作成されており、明示的にファイルをオープンしているコードにはなっておりませんでした。

インスタンス自体は生成されておるようですが、
プロパティが読み込めておらず、別途上書きを行っている箇所もありません。

どなたか同様の現象になられた方はおられるでしょうか?

ちなみにインスタンス自体はPublic Sharedで様々な場所から参照されております。



[ メッセージ編集済み 編集者: 焼きそば 編集日時 2008-06-02 14:08 ]
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2008-06-02 21:33
「インスタンス」というのが何のインスタンスなのかわかりませんし、
「直接プロパティを読み込む」の読み込む元が何なのかもわかりませんが、
XML(ファイルなんですよね?)に書いてある設定を読み込むコードはあるんですよね?
(ファイルオープンのコードは隠蔽されていたとしても)

それをいつのタイミングで行ってるかも重要です。

引用:
ちなみにインスタンス自体はPublic Sharedで様々な場所から参照されております。

ということはアプリケーション起動時にXMLを読み込んで何らかのクラスのSharedフィールドにでも
入れてるんですかね。だとするとワーカープロセスが再起動したときとかの考慮は大丈夫ですか?
焼きそば
ベテラン
会議室デビュー日: 2002/11/06
投稿数: 86
お住まい・勤務地: 東京
投稿日時: 2008-06-03 15:36
引用:

べるさんの書き込み (2008-06-02 21:33) より:
「インスタンス」というのが何のインスタンスなのかわかりませんし、
「直接プロパティを読み込む」の読み込む元が何なのかもわかりませんが、
XML(ファイルなんですよね?)に書いてある設定を読み込むコードはあるんですよね?
(ファイルオープンのコードは隠蔽されていたとしても)

それをいつのタイミングで行ってるかも重要です。

ということはアプリケーション起動時にXMLを読み込んで何らかのクラスのSharedフィールドにでも
入れてるんですかね。だとするとワーカープロセスが再起動したときとかの考慮は大丈夫ですか?



ワーカープロセスについては現在調査中というステータスです。

XMLの読込はログインページのPage_Loadで行っているという状態ですが、
そこでExceptionは吐かれておらず、DBにOpenするときに吐かれるという状態です。
「プロパティを読み込む」という書き方がまずかったです。
「プロパティに読み込む」が正しいお伝えの仕方となります。



[ メッセージ編集済み 編集者: 焼きそば 編集日時 2008-06-03 15:40 ]
ひろ@ya
大ベテラン
会議室デビュー日: 2006/02/23
投稿数: 168
投稿日時: 2008-06-03 17:39
ログインページがブラウザ側でキャッシュされていたらどうなるのでしょうか?

[ メッセージ編集済み 編集者: ひろ@ya 編集日時 2008-06-03 17:39 ]
焼きそば
ベテラン
会議室デビュー日: 2002/11/06
投稿数: 86
お住まい・勤務地: 東京
投稿日時: 2008-06-04 18:12
焼きそばです。

引用:

ひろ@yaさんの書き込み (2008-06-03 17:39) より:
ログインページがブラウザ側でキャッシュされていたらどうなるのでしょうか?

[ メッセージ編集済み 編集者: ひろ@ya 編集日時 2008-06-03 17:39 ]



ログインページにキャッシュは使用しておりません。

また、ワーカープロセスがリサイクルされた場合にログをIISから
出力するように変更してみたのですが、
ConnectionStringがなくなった場合にリサイクルされた形跡がありませんので、
ワーカープロセス関連ではないのではという結論に至っております。

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