アプリ版:「スタンプのみでお礼する」機能のリリースについて

ASP.NETを用いたWebサイトをIIS上で運用した際、開発したアプリケーションが少しでも動いた後にアプリケーションを停止せずサイトを停止すると、ワーカープロセスが原因でCPUが100%となります。
CPUが100%の状態のまま放置してもCPUの負荷が無くなりません。(アプリケーションプールを停止させることによってCPUの負荷が無くなります。)

この事象に関してネットで原因を調査した結果、明確な解決方法が見当たらずこちらに質問させていただく次第でございます。IISの設定に関して詳しい方がおられましたら、この事象の原因と考えられる要素などをご教授下さい。

動作環境
Windows2008 R2
IIS7.5
.NET FrameWork4.5

開発環境
VisualStudio2012
ASP.NET(.NET FrameWork4.0) FORMSで開発
Oracle ODP

A 回答 (2件)

「アプリケーションを停止せずサイトを停止」というのが具体的にどのような手順なのかわからないのですが、手元のシステム(IIS7.5/Win2008R2server)で、World Wide Web Serviceを強制停止してみても、メモリプールやCPU占有は発生しません。



世の中に、IIS7.5+ASP.NET4 Web Formms+ODP.NETで構築されたシステムは大量に存在し、しかも業務用途でクリティカルな要件で動作しているものも数多いはずなので、根本的なバグである事は考えられません。事象の切り分けが必要かと思います。

・ODP.NETなしのアプリケーションでも同じ事象が発生するか?
・DAOによる変化はあるか?(DataReader、TableAdapter、EntityFrameworkなど)
・「アプリケーションが少しでも動いた後’というのはODP.NETと無関係か?
・(プログラム中)usingによるリソースやトランザクションの開放は確実に行っているか?

など、突っ込みどころは多いです。

この回答への補足

ありがとうございます。
おっしゃるとおり、切り分けのために時間を割いて、機能的な差異を作り、境界点を調査するのが筋とは思うのですが、あまりにも単純に出るので、ひょっとすると、結構メジャーな障害なのかもとも思い、経験のある方がおられればと思い質問させていただきました。

状況を加筆すると、
ODP.NETは、OnInitでコネクションを接続し、
OnUnloadでコネクションを解放しています。

Global.asaxのApplication_Startでlog4jの初期化をかけて、Application_endでlog4jのシャットダウンをかけているのが特徴です。

ちょっとでも動かしたとは、
iis起動後、login画面を表示しただけですが、
上記のlog4jの初期化、odpのコネクション接続、切断は走行しています。dbアクセスは一切ありません。

そのあとiisのサイト停止を行ったところで、
ワーカープロセスが100%になってしまった、
というところです。

現在本システムは本番にはいっていますが、
運用中のワーカープロセスが100%になる事象が
出ていないのが救いです。

ワーカープロセスが100%になる現象の原因はなんとしても
突き止めるつもりですが、残念ながら今回は、時間切れで見切り発車しています。

以上

補足日時:2013/10/28 09:40
    • good
    • 3
この回答へのお礼

貴重な時間を割いていただきありがとうございます。

お礼日時:2013/10/28 09:42

単純に、親、子プロセスの関係に、なっている、なっていないで解決策があるのでは? うちではサービスにして、子プロセス可しているけどね。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています