2011-08-24 14 views
6

セッションデータが破損しているか見当たりませんが、負荷がかかっていますが、セッション自体はそのまま残ります。ロード中に破損したASP.NETセッション

Webサイトは、ASP.Net 4.0を実行するIIS 7でホストされ、WebファームではInProcセッション状態を使用し、Cisco ACE Applianceロードバランサの背後に合計4台のサーバがあります。

現時点では問題はランダムであるため、随時問題を再現することはできません。このWebアプリケーションは、過去7か月間正しく機能しています。

スティッキセッションが使用されていても、WebファームでInProcを使用することはお勧めしません。

私たちは実稼働環境と合理的に同一のラボ環境を持っていますが、実質的な負荷(WAPTを使用しています)でそこに再現することはできません。

私たちの運用環境では、ロードバランサ自体に起因する「サーバーホッピング」を排除するために、ロードバランサの後ろに1台のサーバーを分離することを試みました。ただし、1つのサーバーで実行している場合でも問題は解決されません。我々はAppPoolやIISのリサイクルが何も起こっていないことを実証しています。標準的な慣習として、私たちは毎日午前3時に生産アプリプールをリサイクルし、OS上で数ヵ月の稼働時間を楽しんでいます。

シンプルタイプ(整数と文字列)からショッピングカート全体(複雑なオブジェクトグラフ)、ユーザーコントロール(.ascx)インスタンスまで、さまざまなオブジェクトがセッションに格納されます。これらのオブジェクトの多くを簡単にシリアル化できないため、妥当な期間内にアウトプロセス・セッション・ストレージに切り替えることはできません。

誰かがFiddlerを使用してHTTPセッションをキャプチャしようと提案しました。フィドラーを走らせる問題は、意図的に問題を再現することができないということです。したがって、これにより、エラーイベントが発生したときにHTTPトレースを取得できなくなります。私たちの研究室のWAPTからのトレースログは、おそらくFiddlerと同じデータを提供するでしょうが、私が言ったように、それを再現することはできません。

私は非常に誰もが持つかもしれない洞察力をいただければと思います...これまでのところ、ここで収集した情報のすべてに基づいて

+0

壊れているセッションデータに関する情報はありますか?ショッピングカートですか?ランダムですか?あなたがそれを再現できないかどうかあなたはどのように知っていますか?そして、これまで聞いたことがあると思いますので、壊れたレコードのように聞こえるかもしれません。ユーザーのショッピングカートのオブジェクトグラフ全体をセッションに保存する必要性と、ユーザーコントロールインスタンスにも適用されます。 – Sumo

+0

私たちはスタックトレースが発生したときに電子メールを受信するため、顧客の電話と同時に遭遇するため、再現できません。これはしばしばランダムな値ですが、特に、このセッション変数へのアクセスをラップする共有readonlyプロパティに由来しているようです。それは非常にランダムですが、私の顧客サービスの人々は、アプリケーションプールが開始してからしばらく時間が経過するまで、苦情を受け取ることを開始しないため、負荷の下で間違いなく発生します。はい、私たちは、わいせつなオブジェクトグラフとユーザーコントロールをセッションから外す必要があることを知っていますが、その修正は数週間先です。 :/ –

+0

この共有変数の詳細を投稿できますか? – Sumo

答えて

1

は、私は問題が何であるかに関して、推測で答えるつもりです。

セッションが途中で終了する可能性があります。

セッションの期限切れの原因となるのは、アプリケーションプールのリサイクルだけではありません。 Hanselman will tell youのように、これはInProcセッション管理と大容量を組み合わせた場合によく起こります。

編集:それはあまりにも、起こることができるよう、このような失われたセッションの原因を特定する方法の詳細older blog post for IIS6を見て、特定のユーザーだけでなく、すべてのセッションに影響を与え、特にものを取ります。関心のあるセクションは、Application_EndのWebスニペットのコードスニペットの直後です。私はこれに似た新しい情報を探しましたが、すべての問題について話していたことが本当にわかるのはanswer to another question here on SOでした。

関連する問題