- PR -

Webアプリケーション実行時のサーバ変数の持ち方について

投稿者投稿内容
ターキッシュ
大ベテラン
会議室デビュー日: 2003/01/15
投稿数: 126
投稿日時: 2004-05-31 18:28
Jitta様ご返答ありがとうございます。
_________________________________

えっと、ASP.NETワーカプロセスは、デフォルトではメモリの60%に相当するメモリを確保すると、リスタートします。プロセスが再起動するので、他のプロセスに保管しているセッション情報以外はすべて消えます。
_________________________________

ということは、例えば
http://ドメイン/A/A.aspx
http://ドメイン/B/B.aspx

の二つのWebアプリケーションを実行している状態で、A.aspxが
メモリの60%を越えるとプロセスがリスタートし、B.aspxで使用
していたセッション情報も吹っ飛ぶということでしょうか?
それとも、A.aspx内のセッション情報が無くなるだけで、B.aspx
内は保持されるのでしょうか?

誠に申し訳ありませんが、よろしくご教授ください。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-05-31 19:15
引用:

ターキッシュさんの書き込み (2004-05-31 18:28) より:

の二つのWebアプリケーションを実行している状態で、A.aspxが
メモリの60%を越えるとプロセスがリスタートし、B.aspxで使用
していたセッション情報も吹っ飛ぶということでしょうか?
それとも、A.aspx内のセッション情報が無くなるだけで、B.aspx
内は保持されるのでしょうか?


 ASP.NETのワーカプロセス、です。ワーカプロセスは、1つですべてのアプリケーションを処理します。実際に、タスクマネージャの[プロセス]タブで、「apnet_wp.exe」を探して、確認してください。(IIS6.0だと、事情が変わります)
 「ASP.NET の構成」や、「Web フォームの状態管理」、それぞれの下にあるドキュメント、およびリンクされているドキュメントを参照してください。


 「他のプロセスに保管しているセッション情報」というのが、混乱させたかな?これは、「Webフォームの状態管理」に書いてあるのですが、セッション情報をデータベースに格納したり、セッション状態を格納する為のサーバを別に立てて、そちらで管理したりすることができます。これを指しています。
ターキッシュ
大ベテラン
会議室デビュー日: 2003/01/15
投稿数: 126
投稿日時: 2004-06-02 10:52
Jitta様 ご返答ありがとうございます。

引用:

Jittaさんの書き込み (2004-05-31 19:15) より:
 「他のプロセスに保管しているセッション情報」というのが、混乱させたかな?これは、「Webフォームの状態管理」に書いてあるのですが、セッション情報をデータベースに格納したり、セッション状態を格納する為のサーバを別に立てて、そちらで管理したりすることができます。これを指しています。



一応、ご紹介されたページを読んでは見たものの、理解には程遠いようです。
ただ、上でおっしゃられていることは、セッション情報等を他に保存しない
限り、60%を越えた時点でリセットされてしまうということでよろしいでしょうか?

ふと思ったのですが、ロジックで無限ループが発生していたASP.NETのページを
起動させていたマシーンは落ちず、さらに他のASP.NETのページは問題無く
起動しておりました。

これはASP.NETのワーカプロセスが自動的にリスタートしていたということ
でしょうか?
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2004-06-02 11:48
引用:

ターキッシュさんの書き込み (2004-06-02 10:52) より:
ただ、上でおっしゃられていることは、セッション情報等を他に保存しない
限り、60%を越えた時点でリセットされてしまうということでよろしいでしょうか?

ふと思ったのですが、ロジックで無限ループが発生していたASP.NETのページを
起動させていたマシーンは落ちず、さらに他のASP.NETのページは問題無く
起動しておりました。


自動的にリスタートされるとは言っても、サーバでの処理中に切られたら困りますから、基本的にはその時点で処理中のリクエストが完了するまでは待つはずだと思います。
ただし、これでは無限に動作しているときや、デッドロック時に永久にリスタートできないので、リスタート要求をしてから強制的にリスタートするまでのタイムアウトがあったと思います。
あと、デッドロックを防ぐために、1リクエストの処理に一定時間以上かかるとリスタートもあったような気がします。

※なんとなくの記憶で書いてるので、ちゃんと確認はしてください。

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