1

以下のサーバーエラーの報告を定期的にユーザーから受けています。

[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」。

誰かがこれを引き起こしている可能性があるものについて何か考えを持っているか、または同様の問題を経験したことがあるなら、私はどんな入力にも感謝するでしょう。

ありがとう!

4

1 に答える 1

0

私は最近同様の問題を抱えていたので、これはワイルドな刺し傷です(まったく同じではありません)。

サーバーの起動時に/3GBフラグを使用していますか?

そうでない場合でも、perfmon(メモリの下)を介して無料のシステムページテーブルエントリを確認できます。15Kにアクセスできる必要があります。5〜10K未満のものはすべて「不良」であり、セッションに保存するときにOOM例外が発生する可能性があります。

http://blogs.technet.com/b/clint_huffman/archive/2008/04/07/free-system-page-table-entries-ptes.aspx

于 2010-10-14T19:45:00.467 に答える