- PR -

セッションタイムアウト

1
投稿者投稿内容
川上
常連さん
会議室デビュー日: 2006/08/18
投稿数: 20
お住まい・勤務地: 東京
投稿日時: 2008-08-13 12:28

ASP.NET 2.0(VB) + SQL2005 で開発したウェブアプリケーションを
Windows Server 2003(SP1) で運用してます。

突如、WebAP上のセッションが切れてしまう現象にぶち当たってまして
ご教授を頂きたくスレッドを立てさせて頂きました。

セッションが切れたタイミングのログを色々と調べていましたら、
サーバーのイベントビューアからのセキュリティイベントで、
「成功の監査 - 538(ログオフ) - IUSR_xxx」
が発生してまして、数分後に
「成功の監査 - 540(ログオン) - IUSR_xxx」のイベントもあります。

どうも、538(IUSR_xxxのログオフ)のタイミングで、
複数のユーザーのセッションが同時に切れてしまってるようです。

538と540のイベントは一日の中で不定期に8回くらい発生してます。

このイベントが発生する原因も良く分りません。


ウェブアプリケーションではフォーム認証を使用していますので、
IUSR_xxxは必要なアカウントだと思います。


何らかのヒントでも助かりますので、よろしくお願いいたします。
よこけん
大ベテラン
会議室デビュー日: 2006/01/31
投稿数: 216
投稿日時: 2008-08-13 12:58
IIS のワーカープロセスが再起動しているんじゃないかと思います。
ワーカープロセスが再起動すると、IUSR_xxx もログオフ/ログオンするようです。(つまりこれが原因ではないと思います)
セッションステートのモードを InProc から StateServer に変えれば、ワーカープロセスが再起動してもセッションは失われません。
# StateServer は、ASP.NET 状態サービスという Windows サービスを使用するので、このサービスが起動している必要があります。

ちなみにワーカープロセスの再起動の条件はIIS のアプリケーションプールのプロパティ辺りで制御できますので、セッション云々を除いても再起動されること自体に問題があるという場合はその辺を見直すといいかもしれませんね。(僕はこの辺のことはよく知らないですが…)

_________________
C#と諸々

[ メッセージ編集済み 編集者: よこけん 編集日時 2008-08-13 13:00 ]
川上
常連さん
会議室デビュー日: 2006/08/18
投稿数: 20
お住まい・勤務地: 東京
投稿日時: 2008-08-13 15:25

よこけん様、ご返信ありがとうございます。

ワーカープロセスの再起動について、IISのアプリケーションプール関係を
調べてみました。

AP上のセッション有効時間が120分に対して、
APプールのアイドルタイムアウトが20分でしたので
アイドルタイムアウト値を少し多めの300分に変更しました。

また、APプールのリサイクル設定も1740分毎ではなく定時(早朝)に行うように
変更してみました。

この変更で少し様子を見てみたいと思います。



セッションステートモードをInProcからStateServerに変更する件については
もう少し勉強して、変更するかの可否を判断したいと思います。

単一のサーバー内でStateServerとして実施可能か?や、
運用中のサーバーで簡単に変更が可能か?など
この辺を勉強してみたいと思います。
kiyokura
ベテラン
会議室デビュー日: 2007/08/08
投稿数: 69
お住まい・勤務地: 岡山
投稿日時: 2008-08-13 16:07
ほかにも、APプールの設定によりますが、スケジュールだけでなく高負荷がかかったとき(CPUやメモリ等々)などにも不定期で実施される可能性があるので、注意されたほうが良いかもしれません。


#同一サーバ上でもStateServerは使えます。
#可能であれば、InProcをやめる方向で調査・検討される事をお勧めします。
#既に運用中のシステム場合、変更の判断が難しいかもしれませんが…(Session_OnEndの使用を前提とした作りになっていたり、非SerializableなオブジェクトをSessionに格納している等だと特に……)。
1

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