- - PR -
HTTP500エラーの障害切り分けについて
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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にしても同様の現象が発生しました。 原因の特定のためにも切り分けを行いたいのですが、 どこに着目すればよいか、皆様のアドバイスをいただきたいと思います。 以上、よろしくお願いいたします。 | ||||
|
投稿日時: 2008-06-01 13:07
ConnectionStringが何なのかを調べる(おそらく空文字とかでしょうね)。 その周辺の変数の値や、どこを通ってるかなどを把握するためにログを書く。とか。 あとは、ソースを追ってみるとか(十中八九プログラムの問題だと思いますので)。 特に、ファイルオープンの排他とか、大丈夫ですかね。(ただ、ファイルオープンでエラーに なったらその時点で例外出ると思いますが。握りつぶしたりしてませんかね。) | ||||
|
投稿日時: 2008-06-01 14:19
焼きそばです。 べるさん、ご返答ありがとうございます。 ConnectionStringは空文字で返ってきています。 ファイルオープンの排他については未調査ですので、 その点も明日、再度調査してみます。 | ||||
|
投稿日時: 2008-06-02 14:05
焼きそばです。
上記調査しましたが、 XMLからインスタンス生成時に直接プロパティを読み込むように 作成されており、明示的にファイルをオープンしているコードにはなっておりませんでした。 インスタンス自体は生成されておるようですが、 プロパティが読み込めておらず、別途上書きを行っている箇所もありません。 どなたか同様の現象になられた方はおられるでしょうか? ちなみにインスタンス自体はPublic Sharedで様々な場所から参照されております。 [ メッセージ編集済み 編集者: 焼きそば 編集日時 2008-06-02 14:08 ] | ||||
|
投稿日時: 2008-06-02 21:33
「インスタンス」というのが何のインスタンスなのかわかりませんし、
「直接プロパティを読み込む」の読み込む元が何なのかもわかりませんが、 XML(ファイルなんですよね?)に書いてある設定を読み込むコードはあるんですよね? (ファイルオープンのコードは隠蔽されていたとしても) それをいつのタイミングで行ってるかも重要です。
入れてるんですかね。だとするとワーカープロセスが再起動したときとかの考慮は大丈夫ですか? | ||||
|
投稿日時: 2008-06-03 15:36
ワーカープロセスについては現在調査中というステータスです。 XMLの読込はログインページのPage_Loadで行っているという状態ですが、 そこでExceptionは吐かれておらず、DBにOpenするときに吐かれるという状態です。 「プロパティを読み込む」という書き方がまずかったです。 「プロパティに読み込む」が正しいお伝えの仕方となります。 [ メッセージ編集済み 編集者: 焼きそば 編集日時 2008-06-03 15:40 ] | ||||
|
投稿日時: 2008-06-03 17:39
ログインページがブラウザ側でキャッシュされていたらどうなるのでしょうか?[ メッセージ編集済み 編集者: ひろ@ya 編集日時 2008-06-03 17:39 ] | ||||
|
投稿日時: 2008-06-04 18:12
焼きそばです。
ログインページにキャッシュは使用しておりません。 また、ワーカープロセスがリサイクルされた場合にログをIISから 出力するように変更してみたのですが、 ConnectionStringがなくなった場合にリサイクルされた形跡がありませんので、 ワーカープロセス関連ではないのではという結論に至っております。 |