以下のサーバーエラーの報告を定期的にユーザーから受けています。
[OutOfMemoryException: Exception of type System.OutOfMemoryException was thrown.]
[HttpException (0x80004005): Unable to serialize the session state. Please note that non-serializable objects or MarshalByRef objects are not permitted when session state mode is ‘StateServer’ or ‘SQLServer’
このエラーが表示される状態になると、エラーがローカルで再現可能かどうかがヒットまたはミスしているように見えます。そうである場合、通常は数分間再現できますが、すべてのページがヒットするわけではありません。これは通常、自然に減少し、通常、ユーザーとの連絡に戻るまでに解決します。
Webサービスには、営業時間中に約90〜100のアクティブな接続があります。このサーバー上の他の唯一のサイトは、このサイトのステージングバージョンであり、非常にまれにしかヒットしません。セッション状態は、仮想マシンのかなり大きなクラスターに格納されているアプリケーションデータベースと同じSQLServerインスタンスに格納されます。これが行われている間、WebサーバーもSQLServerも(プロセッサまたはメモリに関して)課税されていないようでした。
エラーが発生しているページの分布は、各ページの正規分布に匹敵するようです。発生時期のパターンは見られません。週末の平均エラーは少なくなりますが(これは通常のサイトの負荷と相関関係があります)、これでも一貫性がないようです。
また、ログに記録されたエラーと、ログに記録されたパフォーマンスモニターイベントの種類との間に相関関係はないようです。これには、次のような一連のperfmonカウンターが含まれます。
.NET CLR Jit(w3wp)\notal # of IL Bytes Jitted
.NET CLR Jit(w3wp)\IL Bytes Jitted / sec
.NET CLR Jit(w3wp)\% Time in Jit
.NET CLR Jit(w3wp)\# of Methods Jitted
.NET CLR Jit(w3wp)\# of IL Bytes Jitted
ASP.NET Apps v1.1.4322(__Total__)\Requests Failed
ASP.NET Apps v1.1.4322(__Total__)\Errors Unhandled During Execution/Sec
ASP.NET Apps v1.1.4322(__Total__)\Errors Unhandled During Execution
ASP.NET Apps v1.1.4322(__Total__)\Cache Total Turnover Rate
ASP.NET Apps v1.1.4322(__Total__)\Errors During Preprocessing
ASP.NET Apps v1.1.4322(__Total__)\Errors During Execution
ASP.NET Apps v1.1.4322(__Total__)\Requests Executing
ASP.NET Apps v1.1.4322(__Total__)\Requests Total
ASP.NET Apps v1.1.4322(__Total__)\Errors Total
ASP.NET Apps v1.1.4322(__Total__)\Sessions Abandoned
ASP.NET Apps v1.1.4322(__Total__)\Errors Total/Sec
ASP.NET Apps v1.1.4322(__Total__)\Anonymous Requests/Sec
ASP.NET Apps v1.1.4322(__Total__)\Requests/Sec
ASP.NET Apps v1.1.4322(__Total__)\Session SQL Server connections total
ASP.NET Apps v1.1.4322(__Total__)\Cache Total Hit Ratio
ASP.NET v1.1.4322\Requests Current
ASP.NET v1.1.4322\Request Execution Time
Memory\Pages/sec
Bytes Total/sec
PhysicalDisk(_Total)\Avg. Disk Queue Length
Processor(_Total)\% Processor Time
Web Service Cache\File Cache Hits %
Web Service Cache\File Cache Misses
Web Service Cache\File Cache Hits
Web Service(_Total)\Current Connections
Web Service(_Total)\Post Requests/sec)
ログに表示される唯一のパターンは、これらのエラーの発生とは相関していませんが、表示できる唯一のパターンです。perfmonログを見ると、「合計Jitted ILバイト数」、「IL Bytes Jitted /秒」、「%Time in Jit」、「#of Methods Jitted」、「#of ILBytesJitted」のパターンが見られます。 「ステージングサイトのカウンター(トラフィックを取得してはならない)は、20〜50分間データをプルしません。その後、「IL Bytes Jitted / sec」が急増し、「%Time」が急上昇します。メインサイトで最大99%の2〜20分間の「inJit」。
誰かがこれを引き起こしている可能性があるものについて何か考えを持っているか、または同様の問題を経験したことがあるなら、私はどんな入力にも感謝するでしょう。
ありがとう!