トップ回答者
ASPXからASPを実行するとフリーズ状態になります

質問
-
WINDOWS2003サーバに.NET2003をインストールして、ASPXにてWebプログラムを作成しております。
ASPXからASPを実行する処理を実行しているのですが、希にメータが全く動かないフリーズ状態となります。
この状態となった場合は、OSの再起動を実行して対応を行っております。何故、この現象が発生するのか
分からず、苦しんであります。(WINDOWS2000サーバで同じ環境を作成して実行しておりますが、
問題の現象は発生しません)WINDOWS2000のサポートが終了し、2003に切換を行う必要があるのですが
この現象の為、切換が出来ないでおります。原因や対策等分かりましたら、教えていただきたいのですが。
宜しく御願いします
- 移動 奥主 洋Microsoft employee 2010年9月9日 17:16 バージョンの適合 (移動元:Internet Information Services 7.x – 全般)
- 移動 Wang Huang 2012年10月1日 14:02 (移動元:Internet Information Services 5.x, 6.0 - 全般)
2010年8月31日 4:48
回答
-
はい、一人しか確認用のWebサーバは使用していません。
この状態で今も現象が発生しました。対応は、サーバのリブートかインターネットサービスの再実行しかない状態です。
なるほど。1人だけが1本のリクエストをするだけでも現象は再現するのですね。K.Oumi さんの睨み通り、結構単純な原因であるように思います。
ログの出方からすると、現象は Application 変数がらみのデッドロックですので、そのあたりを重点的に見直すのもありかと。
(Lock だけして Unlock していないとか、呼び出している COM の内部で Application 変数の Lock をしているとか)
ダンプを解析するのが王道のようにも思えますけれども。
ファイル出力のログを確認しているのですが、問題発生時ASPは何も動作していないようです。
global.asa はどうですか?Session_OnStart とか Session_OnEnd とかないですか?2010年9月17日 7:01 -
こんにちは。
ご質問の意味を少々わかりかねているのですが、「ASPX から ASP を実行する処理」、「メータが全く動かないフリーズ状態」 というのはどのような状況(状態?)でしょうか。
この辺をもう少し具体的にご説明いただけると、良いと思います。
2010年8月31日 7:52 -
iisstateについては下記サイトから
IIS 6.0 Resource Kit Tools について
http://support.microsoft.com/kb/840671/jaあと、エラーハンドラが無いようなのですが、
on error なんとか、でエラーの情報拾えませんか?また、対象のファイルを更新する処理でOPENしたままになる現象が起きていたりしませんか?普通に考えるとそのような、「あっ!」っていうミスが多いとおもうのですが・・・
K.Oumi2010年9月17日 4:40
すべての返信
-
こんにちは。
ご質問の意味を少々わかりかねているのですが、「ASPX から ASP を実行する処理」、「メータが全く動かないフリーズ状態」 というのはどのような状況(状態?)でしょうか。
この辺をもう少し具体的にご説明いただけると、良いと思います。
2010年8月31日 7:52 -
おはよう御座います。
質問が分かり難く申し訳ありません。
login.aspxのソース(HTML)の最後に下記の文を入れて、aspのプログラムを動かしています。
<SCRIPT langeage=javascript>
windows.open('setses.asp?SES1=A&SES2=B');
</SCRIPT>
setasp.aspでは、セッションの設定やDB検索を行っています。ASPXで設定したセッションがASPで利用できないためこの様なプログラムを作っている状態です。
ここで設定したセッションは、後で呼び出すASPのプログラムで利用を行っています。login.aspxからsetses.aspを立ち上げた際に通常直ぐに完了する処理が終わらないことが希に
発生します。発生頻度は、1日1回程度でしょうか(一日で500回位のログインは行っています)。
又、現状の本番はwindows2000サーバで実行していますが、現象は発生していません。
新たに作成したwindows2003サーバでのみ現象が発生します。(導入プログラムは同じです)何故発生するのか?どうすれば直るのか?が分からず、windows2003に切換が出来ない状況です。
宜しく御願いします。2010年9月1日 0:17 -
こんにちは。
500回アクセスして、1回程度(0~2回)だけ発生するとすれば、現在提示されている「状況」だけでのアドバイスは難しい気がします。
・イベントログに何か出力されていないか。
・アプリケーション プールのリサイクル状況はどうか
・通信をモニタしてみる(リクエストは届いているのかどうか)
・ルーターが何か悪さしていないか
・ASPで解放すべきオブジェクトを解放せずにのこしたまま?
・アクセスログ分析
・ASPが全て実行できない状況で、アプリケーションプールをリサイクルするとどうなるか?とか・・・
・ASPXとASPは別セッションなのでセッションオブジェクトが共有できないのは当然、なところで何か特別な細工していることが問題?
・他にもいろいろあるかも最近IIS触ってないのでこれだ!ってくるものはないのですが・・・調査するポイントは沢山ありそうです。
とはいっても、イベントログにも何も出力されずに、だんまりということなんでしょうか?
もしそうだとすると、地道な調査が必要な気がします。
K.Oumi2010年9月1日 8:56 -
おはよう御座います。
サーバのイベントログには何も出力されません。
今、まさしく現象が発生しています。(テスト環境の為、問題はありませんが)
問題の環境でASPを実行すると、IEが真っ白で下のメータが微妙に動いているだけ、
終わることはありません。又、ASP自体を何もしないソースに修正し、
・一番上にJavaScriptでALERT文を入れる
・Response.Writeで画面表示を行う
としても、何も変化がない状況です。対策としては、サーバのリブートで現象はリセットされますが
直ぐに発生する状況で、本番環境にはとても利用できる状況ではありません。2010年9月1日 22:17 -
こんにちは。
状況としては、やはり手がかりが少ないので、Debug Diagnostic Tools でダンプを取って、実際にどの辺りで処理が止まってしまうのか確認するのが一番確実とおもいます。
こちらの記事にハングアップ時の情報採取手順がありますので、このツールが初めてでしたら参考になるとおもいます。
Web/DB プログラミング徹底解説 - ハングアップ
http://keicode.com/debug/dbg415.php# うまくいけば、ダンプ解析をしなくても、レポートにどの辺で停止しているか表示されます。
ちなみに、一般的には、この状況は ASP からの COM 系の呼び出しでおきるのが普通です。どのようなシステムか処理内容は存じませんので、一般論になりますが、Session オブジェクトに一度作った COM オブジェクトへの参照を設定して使いまわしているとか (この場合、毎回 Server.CreateObject, Nothing するよう書き直す) が昔よく見た事例です。
ともあれ、ダンプを取るとどのモジュールのどの辺か、というのもみえてきますので、おすすめです。(うまくいけば、停止している ASP の行も見えてきます)
以上、参考になりましたら幸いです。
2010年9月2日 0:25 -
こんにちは。
Debug Diagnostic Toolをインストールして実行してみました。
ERRORと表示された内容は下記の内容でしたが、良く意味が分かりません。
このエラーを元にどの様に確認すればよいでしょうか?
見当違いの質問をしていましたら、ご容赦くださいDetected a serious critical section related problem in w3wp.exe__DefaultAppPool__PID__2176__Date__09_02_2010__Time_11_45_04AM__268__IIS_COM+ Hang Dump.dmp
Lock at 0x02042028 is Orphaned
Impact analysis
100.00% of executing ASP Requests blocked
35.00% of threads blocked
(Threads 29 30 31 32 33 34 35 36 37 38 39 41 42 44 46 47 48 51 52 54 56)
The following functions are involved in the root cause
asp!CAppln::Lock+44
The following modules are involved in the root cause
\\?\C:\WINDOWS\system32\inetsrv\asp.dll from Microsoft Corporation2010年9月2日 4:22 -
こんにちは
以降は、ダンプファイルの中を見て行く必要があるのではないでしょうか。
asp!CAppln::Lock+44
が出ているので、まさに何かロックしようとしてハングっている気がします。
「だれが」「どこで」「何をしている」を探る必要があります。IISSTATE(リソースキット) のログも状況を把握するのには有効かもしれません。
IIS5.0 と IIS6.0 の非互換情報をチェックしてみるのも良いかもしれません。
(プロセス分離モードだと動くかもしれません)定期的にリサイクルすると発生しないとか・・・(対処療法的ですが・・)
K.Oumi2010年9月2日 7:10 -
こんにちは。
asp!CAppln::Lock+44 は asp が使ってるロック (Critical Section) だとおもいますが、この高頻度で不具合に遭遇するというのもあまり無い話とおもわれます。。。さて、どうするか、ですよね。
確認なのですがこのログは、平常実行状態 (ここでツールをセット) → ハングアップ発生 (ツールによってダンプを自動採取) という流れで採取されましたか?それともハングアップの状態を長時間保持(調査目的で)しているところでダンプを採取されましたでしょうか?IIS6 ではハングアップが発生した後に、ASP 側である程度対処しようとしてしまうので、もしかしたら元の現象と違うこともありえるかとおもいます。(可能性は低いかもですが) もし後者でしたら、平常実行状態から、現象が再現するまでツールを仕掛けてもう一度情報を採取してみてはいかがでしょうか。
それと、念のためイベントログに ASP から何かエラーが出ていないか、ご確認されると良いとおもいます。
ちなみに、今回の状態は Application オブジェクトのロックで、ロックをかけたまま何か処理をして、そのまま解放せずにスレッドが終了した状態とおもわれます。とすると、Application オブジェクトの使い方で何かありそうですが・・・ ただのキー・バリューをセットするだけでは、こんなことは起きそうに無いとおもいます。
試して無くただの予想で申し訳ないですが、Application オブジェクトを使って行っている(キー・バリューのセット以外の)何かの処理が失敗して、内部でアボートして、ワーカースレッド内のスレッドがどれかいなくなったようなこともあるかもしれませんね。
K.Oumi さんのご提案に加え、試すこととしては逆にプロセス分離にしないで全てインプロセスにして、「ASP のデバッグを有効にする」 というのにチェックしてみたらもしかしたら回避できるか、あるいは、現象が変わって調査しやすくなるのでは、とおもいました。
2010年9月2日 16:20 -
おはよう御座います。
ツールを起動した後にハングアップを発生させて、ログを取得しました。
但し、サーバがハングアップを必ず発生する状態になってから行っています。昨日インターネット上の情報を調べて、『IIS5.0 プロセス分離モードで実行する』にチェックを入れて
サーバを運用してみましたが、同じくエラーが発生しました。
エラー発生の際にツールを起動しましたが、昨日と同じエラーが発生していました。
windows2003(IIS6)のみ発生していますので、もしかしたら直るのではと期待していましたが駄目でした。イベントログには何もエラーは乗ってきていません。
小山さんの逆にプロセス分離にしないで全てインプロセスにして、「ASP のデバッグを有効にする」 とありますが
IISの設定上で見つけることが出来ません。何処で設定をするのでしょうか?2010年9月2日 23:56 -
こんにちは。
まず、採取タイミングですが、必ずハングアップが発生する状態になる前に仕掛ける方が良いと思います。(問題のロックが Orhpaned になるきっかけとなるログが残る可能性があるのでは、と期待してます)
それから、「インプロセス+ASP のデバッグ」 という設定については、舌足らずで申し訳ありませんでした。
これは 「IIS 5 互換モード+Application protection = Low (IIS Process) + Enable ASP server-side script debugging をチェック」 のつもりでした。ASP のデバッグについては、ASP のアプリケーションの 「設定 (Configuration)」 ボタンをクリックして、表示されたダイアログ内の Debugging タブを選択します。そこの上部に設定があります。
ASP のデバッグを有効にすると、処理が並列処理とならずシリアライズされます。これによって回避あるいは解決、とはいかないかもしれませんが、だいぶ挙動が変わり、もう少しわかりやすいログが取れるかもしれないと期待してます。
2010年9月3日 6:17 -
私の環境は英語環境しかないので、日本語 UI ではもしかしたら "設定" ではなかったかもしれません・・・(申し訳ありません)。
サイトのプロパティを開き、"Home Directory" タブを選択、Application settings のグループの中の右側、下から二番目のボタンが Configuration のつもりなのですが・・・ (日本語 UI で 「設定」 ではなかったでしたっけ・・・? IIS6 ですよね?)
以上、よろしくお願いします。
2010年9月3日 14:35 -
こんにちは。
困っている気持ち、伝わってきました。
が、ここまで解決方法についてということよりも、調査方法についての話がされてきています。そのうえで、何をしていいかわからないという事であれば、ちょっと問題ですね。
ダンプを調査する。iisstateのログを見る。など
これらがハードル高いようであれば、(冷静になって)次の事を一通りやってみてはいかがでしょうか。1)Application Objectの使いかたに問題がないかを関係ソースについて全てチェック。
きちんと破棄されるべき物が破棄されているかなど。
例外条件など特定のケースでの実行漏れが発生しないかなど。
2)COMオブジェクトの使いまわしについてチェック
例外条件など特定のケースでの破棄漏れが発生しないかなどもチェック。
3)以下のページを参考に問題が無いかをチェック。
古いCOMコンポーネントやSTAなコンポーネントを使っているために、問題が起きているかもしれません。(MDACなど関係あるかも?)
ASP テクノロジでのコンポーネントのトラブルシューティング http://msdn.microsoft.com/ja-jp/library/dd313984.aspx
4)使用しているCOMコンポーネントを列挙する。
あ!それならこうかも!という(私ではない)誰かがいるかもしれません。
5)最後の手段
MS(かどこか)のサポート窓口等を頼る。
6)究極の手段
どこかにソースを全部晒す。さすがに無理がありますよね・・・
問題となっているASP ソースが特定できれば、全体(か部分)を見せられる範囲で提示するというのは、ありだと思います。
K.Oumi2010年9月10日 2:01 -
こんにちは。
今までプログラム(VBSCRIPTやVB.NET)を行ってきて、環境面に関しては殆ど行ってきておりませんでしたので
不可解な現象が発生して非常に苦しんでいます。現在までに分かっている内容を記入します。
1.windows2000サーバでは問題は発生していません。
windows2003サーバでのみ現象が発生します。
自分としては、windows2000と2003でのIISの設定は同じにしているつもりです。2.windows2003で発生している現象は常に発生している訳ではありません。
但し、一度発生すると、その後IISの再起動等行わない限り解決しません。
発生するタイミングは不定期で、短いときは数分で発生し、長いときは数日掛かります。3.発生している現象は、あるWebサービスでのみASPファイルが動かなくなる。
ASPファイルの最初にresponse.writeやJavaScriptのalertを入れましたが、全く反応が無く
全く動いていないと思います。
その為、何処のソース問題が起きているのか分かっていません。
問題発生時にHTMLやASPXに関しては問題なく動作する事は確認出来ています。
私が言葉の定義がなっていない可能性がありますので、追記します。
Webサービス:IISの規定のWebサイトで私が作成した仮想ディレクトリの一つです。
自分としては、IISの設定が一番怪しいのではないかと思っています。
(例えば、2000では問題なく動作するが、2003になって厳密になり問題が発生している等)
一番の問題は、前任者が設定したIISの設定の意味を分からずに同じ設定をしている自分にあることは明かと思います。
皆さんのアドバイスをいただいたり、インターネット上で確認を行い、対応や現象確認を行っているのですが、
未だ原因判明しておりません。
解決のヒントとなるような事がありましたら、是非アドバイスを御願い致します。2010年9月13日 4:31 -
hi,
現象だけを何度も投稿しただけでは、何も解決しませんよ~
>不可解な現象が発生して非常に苦しんでいます。
調査が全く進展していないように見えるのが不可解です。>皆さんのアドバイスをいただいたり、インターネット上で確認を行い、対応や現象確認を行っているのですが、
ApplicationObjectの問題ではない、という結論だと理解して良いですか?
そのたCOMオブジェクトの問題でも無いということで良いですか?
つまり、ロックはコードの問題で発生していないという、確認は完了したと考えて良いですか?フリーズしたときに、ワーカープロセスのリサイクルで解決しませんか?OSのリブートでなければ解決しないとするとIISのバグの可能性(おそらく未知の)もでてきます。
もっとも、環境の問題だと考えているなら、まず設定値が正しいということを確認したほうがよいですね。
じつは、「最大CPU使用率を越えた時の動作」でシャットダウンとか・・・
ラピッドフェール保護の指定が妥当でないとか・・・
そもそも、メモリのサイズが違うからとか・・・
同じ設定=数値が同じ99なら99、同じ設定=数値の算出根拠が同じ:30%(母数によって変動)
K.Oumi2010年9月14日 6:23 -
月並みですみませんが、OS のサービス パックは最新のものを当てていますでしょうか?
1.windows2000サーバでは問題は発生していません。
windows2003サーバでのみ現象が発生します。
自分としては、windows2000と2003でのIISの設定は同じにしているつもりです。
OS 以外にもハードウェア構成など変わっていませんでしょうか?例えば CPU がマルチになったとか。
CPU が複数になることによりスレッドが並行に動作し、隠れていたスレッド絡みのバグが顕在化した例に(IIS ではありませんが)遭遇したことがあります。
2.windows2003で発生している現象は常に発生している訳ではありません。
但し、一度発生すると、その後IISの再起動等行わない限り解決しません。
発生するタイミングは不定期で、短いときは数分で発生し、長いときは数日掛かります。
クリティカル セクションのデッドロックですので、発生するタイミングは不定期になります。
たくさんのリクエストをいっぺんに処理しようとすると頻度は上がると思います。
3.発生している現象は、あるWebサービスでのみASPファイルが動かなくなる。
ASPファイルの最初にresponse.writeやJavaScriptのalertを入れましたが、全く反応が無く
全く動いていないと思います。
その為、何処のソース問題が起きているのか分かっていません。
問題発生時にHTMLやASPXに関しては問題なく動作する事は確認出来ています。
私が言葉の定義がなっていない可能性がありますので、追記します。
Webサービス:IISの規定のWebサイトで私が作成した仮想ディレクトリの一つです。
Response.Write はクライアントに応答を返さないと見えませんし、JavaScript の alert もクライアントに応答が返ってからブラウザーの上で実行しないと見えません。
応答を返す前にハングしている状態だとすると、どちらも有効なデバッグ方法ではありません。
面倒かもしれませんが、外部ファイルに文字列を出力するようなトレース ログを仕込むのが確実なのではないでしょうか。
ログをいっぱい仕込むと、スレッドの実行タイミングが変わってしまうので、デッドロックが隠れてしまったりするかもしれません。
ダンプを解析するのが本当は近道だったりするのかもしれません。2010年9月14日 6:55 -
こんにちは
以下ほとんど、老婆心なのですが。>発生するタイミングは不定期で、短いときは数分で発生し、長いときは数日掛かります。
という事ですが、発生する前には同じ操作(ページ操作など)を行っているとかいう事はありませんか?
もしくは、発生する操作の前に行っている操作がいつも共通しているとか・・・
もしくは操作の意味として同じことをしているとか(データは違うけど、内部の処理的に大量のループが発生するとか)
(リークによるハングアップの可能性を疑っているという事です)
(本番では、適度にリサイクルが実行されるので、問題が顕著にならないという可能性もあります。アプリケーションプールも複数使っているとか・・・)
ダンプやトレースなど「実際を追う調査」ではなくて、ログを仕込んだりする「現象を追う調査」を行うのであれば、操作のパターンや発生するパターンなどについて注意を払う必要があります。そうしたうえで、共通するパターンやコードなどを推測し、特定しなければなりません。たとえば、状況によっては問題のサービス以外がトリガとなっている事もありえるわけです。そういった「現象を追う調査」を行う場合でも、最低限パフォマンスカウンタでハンドルの数やメモリの使用量などについては、取得しておき、問題が発生したときにどのような状態・推移かを見る必要があります。iisstateを併用すると(うまくいけば)問題が発生したときのスタックトレースが見られるかもしれません。デッドロックなら1発で解るでしょう。(まこれはDebug Diagnostic Tools でも同じはず)
どのような調査方法を実行するにしても1)新旧の環境の違い
ハード構成、スペック、バージョン
2)利用しているCOMコンポーネントのバージョン
W2K3で利用可能なコンポーネントを使っているかどうか。ADO,JETなども注意。
3)設定値
特にワーカプロセスに関する設定値については問題が無い(はずだ)という確認(または納得)をしておく必要があります。
最後に、今更ですが・・・無いとは思いますが・・・さすがに疑いすぎかな(^^;申し訳ないです。
ASPからEXCELを使いにいったりしてないですよね(^^;
K.Oumi2010年9月15日 6:48 -
おはよう御座います。
発生している際に共通している動作としては、
・ASPXからASPのプログラムを起動しています。
ASPXのJavaScriptからwindow.open()で実行しています。
この動作を行った際にASPがフリーズする現象が発生します。
その為、このスレッドを投稿した際の題名が『ASPXからASPを実行すると...』となっています。
・その後の確認で、現象発生時はASPは全く動作しない事が分かっています。新旧の違いとしては
・ハード構成は同じです。同じブレードでOSのみ異なります。
・ソフト構成は下記のようになっています。(かなり古い構成ですが、OSとIIS以外は同じ構成です)
旧 新
OS windows2000サーバ windows2003サーバ
.NET 2003 2003
ORACLE 817 817
・ASPでのORACLE接続はADOを使用しています。
windows2003ではADOは利用出来ないのでしょうかASPからEXCELの操作等は行っていません。
2010年9月16日 1:21 -
ADO を使えないということはないでしょう。デッドロックが発生しない場合もあるようですし。
何度も申し訳ありませんが、OS のサービス パックは最新のものを適応されていますでしょうか?
Windows Server 2003 と ADO をキーにして検索したところ、次の KB がヒットしました。
ADO ベース アプリケーションとが応答停止 Windows Server 2003 または Windows XP では、Recordset オブジェクトを開くには、adAsyncExecute オプションを使用することがあります。
http://support.microsoft.com/kb/955843/ja
現象は SQL Server で説明されていますが、ADO 絡みのようですので Oracle でも該当するかもしれません。
ただし、デッドロックの箇所が ADO 絡みであるという確証はありませんので、ダンプを解析するなり Oracle のステータスを確認した上で、適用を検討することになると思います。2010年9月16日 6:40 -
こんにちは。
どうもうまく話が通じていいないようで、自分の文章力にがっくりきました。
さて、.NET 2003 => .NET Framework 1.1 or 1.0 ?どちらでしょう
Oracle 8.1.7は既にサポートも切れている気がしますが。
Oracleって確か、サーバサイドでも、Oracle Client のバージョンも関係してきますよね確か。(ちがったかも)
OLEだと思いますが、開発環境と本番と同じなのですよね?
ODP.NETは確かパッチがあったと思いますが、OLEだとどうなんでしょう?
もしODBCだとすれば、ODBC8.1.7系はWindwos Server 2003 に対応していましたっけ?OLEも対応してたかな?
そのへん確かめておくと良いと思います。(OiSCかOTNに情報があるんでしたっけね)
Oracle久しく触ってないので、記憶が・・・あとは、
問題のハングアップが発生したときに、DBMS側でコネクションがどのようになっているかはチェックされましたか?
コネクションの最大値に達しているとか?
単純に、テストデータなどの問題でデッドロックが起きたりしていませんね?
あとリスナーが開発環境だけなんらかの理由で落ちるとかも無いことを確認されていますか?
まとめると・イベントビューアに、アプリ、IIS、Oracle、システム。どれからも何も出ていない。
・DBMSから見た、コネクションの状態も問題無く、デッドロックも無い。
・パフォーマンスカウンタをチェックして、ハンドルリークも無さそうで、メモリの使用量も問題無い。
・何かのはずみで(例外条件などで)COMオブジェクト等がメモリに残るような、コードの実装・記述ミスが無い。
・iis stateのログにもこれといって原因を特定でいるようなものが出ていない
・ハードウェアも完全にスペックが同じで変わらない。
・テストデータも問題ない。
・.NET Frameworkのバージョンとパッチの状態も全く同じでかつ最新状態。当然OSも。
・Oracle系ドライバのバージョンなど関しても、本番/開発環境同一で、サポート情報にも問題が無い。
・Oracleドライバの対応OSや対応.NET Frameworkにも問題が無い。これらがすべてクリアできるなら、最初に取得したダンプの内容をチェックすることをお勧めします。
K.Oumi2010年9月16日 6:50 -
こんばんは。
>イベントビューアに、アプリ、IIS、Oracle、システム。どれからも何も出ていない。
イベントビュワには何も出力はされていません。
>DBMSから見た、コネクションの状態も問題無く、デッドロックも無い。
問題発生前,発生後共にDBから見て問題は見あたりません。
本番環境(windows2000)と確認環境(windows2003)は双方同じDBに接続しています
>パフォーマンスカウンタをチェックして、ハンドルリークも無さそうで、メモリの使用量も問題無い。
問題発生前と後で、タスクマネジャでメモリの使用量に大きな変化はありません
>何かのはずみで(例外条件などで)COMオブジェクト等がメモリに残るような、コードの実装・記述ミスが無い。
本番環境では正常に動作していますので、基本的にコードミス等は無いと思っています。
windows2000と2003とで変えなければならない内容に関しては、?の状態です。
>iis stateのログにもこれといって原因を特定でいるようなものが出ていない
IISのログも出力していますが、特に異常な内容は出力されていません。
>ハードウェアも完全にスペックが同じで変わらない。
本番,確認環境とも、ハードスペックは同じです。
>テストデータも問題ない。
本番データで確認を行っておりますので、問題は無いと思っています。
>.NET Frameworkのバージョンとパッチの状態も全く同じでかつ最新状態。当然OSも。
.NET Frameworkのバージョンに関しては、余り意識したことがありません。
.NET Framework 1.1 or 1.0 どちらを使用しているかは何処を確認すれば良いのでしょうか?
OSに関しては長期連休にまとめてパッチの適用を行っています。
totojoさんからご指摘のあった955843に関しては、適用されていないようですので適用を行ってみます。
>Oracle系ドライバのバージョンなど関しても、本番/開発環境同一で、サポート情報にも問題が無い。
Oracle環境に関しては、本番,確認環境とも同じです。又、問題発生時に何処でフリーズしているのかソースにファイル出力を入れて確認を行いました。
下記のソースで2箇所に入れましたが、(1)は実行されていませんでした。
結果として、ASPは1行も実行されていない様です。
<%@ Language=VBScript %>
<%
'******************************************************
'* 処理名称:.NET対応ASPセッション設定
'*******************************************************
Option Explicit
dim fs
'response.Write "<SCRIPT language=JavaScript>"
'response.Write "alert('--');"
'response.Write "</SCRIPT>"
Set fs = CreateObject("Scripting.FileSystemObject")
fs.CopyFile "e:\webapl\alps-n\inp\A.txt", "e:\webapl\alps-n\out\START.txt", True <=(1)
Set fs = Nothing
Session.Timeout = 120
Server.ScriptTimeout = 600
for each G_Cnt in Request.QueryString
Response.Write G_Cnt + "->" + Request.QueryString(G_Cnt) +"<BR>"
session(G_Cnt)=Request.QueryString(G_Cnt)
next
for Each G_Cnt In Request.Form
Response.Write G_Cnt + " : " + Request.Form(G_Cnt) + "<BR>"
nextSet fs = CreateObject("Scripting.FileSystemObject")
fs.CopyFile "e:\webapl\inp\A.txt", "e:\webapl\out\B_DB_OPEN.txt", True <=(2)
Set fs = Nothing
'-> DBオープン処理
Set G_Dbc = Server.CreateObject("ADODB.Connection")
G_Dbc.Open Session("DatabaseName"),session("DBUSER"),session("DBPASS")2010年9月16日 9:11 -
こんにちは。
CreateObjectは、毎回うまく動作しているのですね?
CopyFile が動いていないのですね?とすれば、
対象のファイルを誰かがOPENしたままという事はありませんか?
このASPコードおよび、他のASPコードで同じファイルを扱っていませんか?もしくは、このASPが同時に複数実行されるケースはありませんか?例外ハンドラは、正しく機能していますか?
ACLの設定を忘れいているとか、ありませんか?じつは、ファイルが巨大でコピーに時間がかかるってことはありませんか?
ちなみに、iis state のログとは、iis のログではありません。
>IISSTATE(リソースキット) のログも状況を把握するのには有効かもしれません。>問題発生前と後で、タスクマネジャでメモリの使用量に大きな変化はありません
パフォーマンスカウンタでinetinfoの情報を見なければわからないと思います。>Oracle環境に関しては、本番,確認環境とも同じです。
同じなのがまずいかもしれません・・・
Oracle 8.1.7 は W2K3でサポートされてなかった記憶があります。(間違いだったらすみません。)ADO経由の場合、Oracle Client は関係ないということであれば問題は無いのかもしれません。
K.Oumi2010年9月17日 2:49 -
こんにちは。
Set fs = CreateObject("Scripting.FileSystemObject")
fs.CopyFile "e:\webapl\alps-n\inp\A.txt", "e:\webapl\alps-n\out\START.txt", True <=(1)
Set fs = Nothing
に関しては、あくまで何処で問題が起きているか確認を行うために、テスト的にいれた部分です。
ファイルは1行のテキストファイルで巨大なファイルではありません。
又、確認環境は1人で利用していますので、コピー処理で共有違反等起きることはありません。iis state のログはどの様に取得すればよいでしょうか?
2010年9月17日 4:28 -
iisstateについては下記サイトから
IIS 6.0 Resource Kit Tools について
http://support.microsoft.com/kb/840671/jaあと、エラーハンドラが無いようなのですが、
on error なんとか、でエラーの情報拾えませんか?また、対象のファイルを更新する処理でOPENしたままになる現象が起きていたりしませんか?普通に考えるとそのような、「あっ!」っていうミスが多いとおもうのですが・・・
K.Oumi2010年9月17日 4:40 -
Set fs = CreateObject("Scripting.FileSystemObject")
fs.CopyFile "e:\webapl\alps-n\inp\A.txt", "e:\webapl\alps-n\out\START.txt", True <=(1)
Set fs = Nothing
に関しては、あくまで何処で問題が起きているか確認を行うために、テスト的にいれた部分です。
ファイルは1行のテキストファイルで巨大なファイルではありません。
又、確認環境は1人で利用していますので、コピー処理で共有違反等起きることはありません。
てっきり、みんなで一斉にアクセスするからデッドロックしているのかと思っていたのですが、1人だけがアクセスしても現象は再現するのでしょうか?2010年9月17日 4:58 -
はい、一人しか確認用のWebサーバは使用していません。
この状態で今も現象が発生しました。対応は、サーバのリブートかインターネットサービスの再実行しかない状態です。
なるほど。1人だけが1本のリクエストをするだけでも現象は再現するのですね。K.Oumi さんの睨み通り、結構単純な原因であるように思います。
ログの出方からすると、現象は Application 変数がらみのデッドロックですので、そのあたりを重点的に見直すのもありかと。
(Lock だけして Unlock していないとか、呼び出している COM の内部で Application 変数の Lock をしているとか)
ダンプを解析するのが王道のようにも思えますけれども。
ファイル出力のログを確認しているのですが、問題発生時ASPは何も動作していないようです。
global.asa はどうですか?Session_OnStart とか Session_OnEnd とかないですか?2010年9月17日 7:01 -
こんにちは。
global.asaでは、Session_OnStart やSession_OnEndの項目はあります。
実際の内容を記入します。(DB名やユーザー名は変更してあります)
Session_OnEndはApplication.unlockがコメントになっていました。これは問題でしょうか?<SCRIPT LANGUAGE=VBScript RUNAT=Server>
SUB Session_OnStart
Session.Timeout = 60 '分
Server.ScriptTimeout = 600 '秒
Application.lock
Application("intTtlCnt")= Application("intTtlCnt") + 1
Application.unlockSession("DataBaseName") = "DB"
Session("DBUSER")="USR1"
Session("DBPASS")="PAS"
END SUB
</SCRIPT>
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
SUB Session_OnEnd
Application.lock
Application("intTtlCnt")= Application("intTtlCnt") - 1
'Application.unlock
END SUB
</SCRIPT>2010年9月17日 7:48 -
こんにちは。
global.asaのApplication.unlockを抜けなく実施するように設定変更を行い約3日たちました。
今のところ、問題の症状は出ていません。
今まで、2日以上現象が発生しないことは無かったので、これで直っていることに期待をしています。
今まで、windows2003環境は一人の使用で確認を行ってきましたが、今日から複数人での確認に切り換えています。
今日問題が発生しない様であれば、来週からは本番を停止し全員がwindows2003の環境を使用する予定です。Application.unlockが入っていないミスは約10年以上続いていました。
windowsNT,windows2000の間は問題は発生しませんでしたが、windows2003となってから現象が発生しました。
今までの環境で問題が発生していなかったことは偶然(運が良かった)と思っています。又、状況が変わりましたら、報告いたします
2010年9月24日 7:08 -
こんにちは、フォーラム オペレーターの星 睦美です。
Keisuke Oyama さん、K.Oumi さん、totojo さん 回答ありがとうございます。
morinagt さん、こんにちは
解決の報告をいただき、私もとてもうれしいです。今回は全ての返信が解決までに導く重要なステップで、1つの返信だけに[回答としてマーク]することは
難しいと思いましたので、同様の問題をもってTechNet フォーラムに投稿される方に参考になりそうなスレッドに
[回答としてマーク]をさせていただきました。K.Oumi さんの応援と、totojo さんの「大問題です」の返信には特にマークしたいです。
皆さんの返信を読ませていただきなだがら、TechNet フォーラムのちからを感じました。今後ともTechNet フォーラムをよろしくお願いします。
マイクロソフト株式会社 フォーラム オペレーター 星 睦美2010年10月1日 2:42