none
セッションタイムアウトが頻発する。 RRS feed

  • 質問



  • まずはじめに、Active Server Pages 3.0の話ですみません。

    レンタルサーバーを借りていてサイトを運用しているのですが、
    該当部分のプログラムの変更を一切加えてないのにもかかわらずセッションタイムアウトが頻発するようになりました。

    簡略化したプログラムは以下のような形です。

    ベーシック認証でユーザーIDをlogin.aspに送る。
    ベーシック認証OKの場合ユーザーIDをセッションに保管。
    以降インクルードファイルでセッションが維持できていることを確認。
    維持できていない場合はログインエラーページに遷移する。

    特に時間が来たわけでもないのに、タイムアウトが発生します。
    (ソース例は下に書きます。)

    レンタルサーバー会社にも調査を依頼中ですが、私が何か調べられることはありますでしょうか?
    または同じような現象が起きた場合、どういった原因又は調査方法があるかご教授下さい。

    よろしくお願いします。


    ソース例
    login.asp
    <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
    <%
    '入った時のユーザーIDを
    Session("userid") = Request.Form("userid")
    Response.Redirect("index.asp")
    %>

    login_check.asp
    <%
    if Session("userid") = "" then
        Response.Redirect("login_error.asp")
    End IF
    %>

    index.asp等の中に含まれるインクルードファイル
    <!-- #include file="login_check.asp"-->


    2010年3月1日 9:04

回答

  • 永遠の若手さん、こんにちは。

    レンタルサーバーということは、システムログやパフォーマンスカウンタ、IIS ログにアクセス出来ない状況でしょうか?
    そうなると原因を探すのは難しいですね。。

    セッションが予期せずに破棄されることについて考えられることを幾つか上げます。
    (ASP.NET 向けの文書や、IISのバージョンによっては適用されない情報があります)
    ・ ワーカー プロセスのアイドル タイムアウト(IIS 6.0以降)
      アプリケーション プールのパフォーマンスの設定
     
    http://msdn.microsoft.com/ja-jp/library/aa720391(VS.71).aspx

    ・ 何らかの原因でワーカー プロセスが終了した(CPUやメモリの異常使用、バグ)
       processModel 要素 (ASP.NET 設定スキーマ)
     
    http://msdn.microsoft.com/ja-jp/library/7w2sway1.aspx

    ・ アプリケーションが再起動した
       エラー メッセージ : HTTP エラー 500-12 - アプリケーションを再起動しています
      
    http://support.microsoft.com/kb/248013/JA/

    ・ Cookieが破棄されている
      Fiddler 等のツールで正しくやりとりが行われているか確認できます。
       トラフィック監視ツール「Fiddler」を使う
      
    http://itpro.nikkeibp.co.jp/article/COLUMN/20050929/221898/
      フォーム認証をトラブルシューティングします。
      
    http://support.microsoft.com/kb/910439/ja

    ほかにも、Webファームを構成している場合や、セッションをアウトプロセスで管理している場合はセッション管理システムの障害が考えられます。

    各種の設定がホスティング会社側で行われていて、ログの調査もできないとなるとあまり有効な調査はできないかと思いますが、
    参考になると幸いです。

    他にも情報をお持ちの方がいらしたら、ぜひ投稿してください。
    それでは。
    2010年3月4日 8:42

すべての返信

  • 永遠の若手さん、こんにちは。

    レンタルサーバーということは、システムログやパフォーマンスカウンタ、IIS ログにアクセス出来ない状況でしょうか?
    そうなると原因を探すのは難しいですね。。

    セッションが予期せずに破棄されることについて考えられることを幾つか上げます。
    (ASP.NET 向けの文書や、IISのバージョンによっては適用されない情報があります)
    ・ ワーカー プロセスのアイドル タイムアウト(IIS 6.0以降)
      アプリケーション プールのパフォーマンスの設定
     
    http://msdn.microsoft.com/ja-jp/library/aa720391(VS.71).aspx

    ・ 何らかの原因でワーカー プロセスが終了した(CPUやメモリの異常使用、バグ)
       processModel 要素 (ASP.NET 設定スキーマ)
     
    http://msdn.microsoft.com/ja-jp/library/7w2sway1.aspx

    ・ アプリケーションが再起動した
       エラー メッセージ : HTTP エラー 500-12 - アプリケーションを再起動しています
      
    http://support.microsoft.com/kb/248013/JA/

    ・ Cookieが破棄されている
      Fiddler 等のツールで正しくやりとりが行われているか確認できます。
       トラフィック監視ツール「Fiddler」を使う
      
    http://itpro.nikkeibp.co.jp/article/COLUMN/20050929/221898/
      フォーム認証をトラブルシューティングします。
      
    http://support.microsoft.com/kb/910439/ja

    ほかにも、Webファームを構成している場合や、セッションをアウトプロセスで管理している場合はセッション管理システムの障害が考えられます。

    各種の設定がホスティング会社側で行われていて、ログの調査もできないとなるとあまり有効な調査はできないかと思いますが、
    参考になると幸いです。

    他にも情報をお持ちの方がいらしたら、ぜひ投稿してください。
    それでは。
    2010年3月4日 8:42

  • 菊池様
    返信ありがとうございます。
    レンタルサーバー側からの返事は他のお客様が高負荷のプログラムを実行していたので、プログラムが正しく動いていなかった人のことでした。

    >レンタルサーバーということは、システムログやパフォーマンスカウンタ、IIS ログにアクセス出来ない状況でしょうか?
    >そうなると原因 を探すのは難しいですね。

    その通りです。

    いただいたリンクをまだ見れてませんが、私の対策としては、セッションタイムアウトの時に特定のURLにリンクするようにしてログを取り、
    一定時間に頻発していることが確認できたら、レンタルサーバー会社に連絡することにしました。

    ちなみにIISのバージョンは6.0です。

    次の対策として、セッションまでは無理でもクッキーに情報(たとば前回のアクセス時間IPアドレスやトークン)を格納して
    やってみると言うのを検討中です。

    自分の中ではセッションにID・パスワードを記録して、ページ遷移ごとにチェックが一般的だと勝手に思ってましたが、
    今回起きているような問題には皆様はどんな対策をしているんでしょうか。
    2010年3月4日 12:45
  • こんにちは。フォーラムオペレーターの高橋春樹です。

    永遠の若手さん、こんにちは。

    今回の問題はレンタルサーバ側の問題なので、サーバ側で負荷分散をするなどの対応してもらうしかないかもしれませんね。

    セッションについての疑問点は、新たにスレッドを立てて質問して頂いた方が、
    回答を得やすいと思うので、別のスレッドとして投稿して頂ければと思います。

    今回、弊社菊地の投稿した内容が、このフォーラムを利用している方にとっても有用な情報になるのではないかと思いましたので、
    勝手ながら、回答マークを付けさせてもらいました。

    今後ともMSDNフォーラムを宜しくお願いします。


    マイクロソフト株式会社 フォーラム オペレーター 高橋春樹
    2010年3月18日 4:46