0

負荷分散された 2 つのサーバーで実行されている ASP.NET アプリケーションがあります。1 つの顧客グループを除いて、すべてが正常に機能しています。これらの顧客はすべて同じ会社から来ています。ランダムに、未処理の NullReferenceException エラーがスローされます。ランダムな場所でランダムな時間に発生します。セッションが完全になくなったかのようです。これは特定のユーザー グループに対してのみ発生しているため、環境に関係があると想定する必要があります。IE6、IE7、IE8、および FF を使用しているユーザーを見てきましたが、すべてのケースでエラーが発生します。

これをトラブルシューティングする方法が 100% わかりません。誰にもアイデアはありますか?

編集:セッションは「InProc」に設定されています

<sessionState mode="InProc" cookieless="false" timeout="20" />
4

4 に答える 4

1

InProc セッションはサーバー間で共有されていないため、このユーザー グループはあるサーバーから別のサーバーに移動しているように見えますが、他のユーザーはそうではありません。ロード バランサーが IP アドレスなどを使用してスティッキー セッションを実現しようとしているのに、この組織がその情報をブロックしている可能性があります。

于 2010-07-08T22:15:12.930 に答える
1

問題を抱えていたユーザーに連絡しました。私は彼に、ブラウザーを開いて whatsmyip.org にアクセスし、彼の IP アドレスを教えてもらいました。それから私は彼に画面を数回更新するように頼みました。なんと、IPアドレスが変わってしまったのです。2 つの異なる IP アドレスを切り替え続けました。これは彼のマシンの IP アドレスではなく、2 つの異なるプロキシの IP アドレスでした。それぞれの要求は明らかにどちらか一方から来る可能性があります。

私たちのロード バランサー (Zeus と呼ばれるもの - 私はネットワークの専門家ではありません) は、IP アドレスを使用してセッション アフィニティ (別名スティッキー接続) を確立するように設定されていました。ロード バランサーが Cookie をドロップし、それを使用してセッションを維持し、すべてが正しく機能するように設定を変更しました。

于 2010-07-23T22:22:08.497 に答える
0

SQL を使用してセッション状態を保存している場合は、ファーム内のすべてのサーバーが同じ SQL データベースを参照していることを確認してください。私は以前にこれに引っかかったことがあり、解決するのにかなりの時間がかかりました!

編集:StateServer実際には、Web ファームで実行している ため、設定する必要がある場合があります。MSDNのセッション状態モードについては、こちらを参照してください。

于 2010-07-08T21:58:40.640 に答える
0

負荷分散が、すべてのヒットを最も使用率の低いサーバーに転送することに基づいている場合、InProc は機能しません。StateServer または SQLServer モードを使用する必要があります。

クライアントからの最初のヒットがサーバー A に向けられ、サーバー A で新しいセッションが開始されると想像してください。同じクライアントからの 2 番目のヒットはサーバー B に送られ、サーバー B が認識しないサーバー A からのセッション Cookie を提供する可能性があります。

「スティッキー」(またはクライアント アフィニティ) 負荷分散を使用している場合、最初のヒットは最も使用率の低いサーバーに割り当てられますが、同じセッションからの後続のヒットは同じサーバーに送信されますが、InProc は引き続き機能するはずです。

于 2010-07-08T22:13:11.000 に答える