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 似乎都没有被征税(无论是处理器还是内存)。

哪些页面出错的分布似乎与每个页面的正态分布相当。就发生时间而言,似乎没有任何模式。我们在周末的平均错误确实较少(这与正常的网站负载相关),但即使这似乎也不一致。

记录的错误与记录的任何类型的性能监视器事件之间似乎也没有关联。这包括一系列性能计数器,包括:

.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 日志,我们看到“Total # of IL Bytes Jitted”、“IL Bytes Jitted / sec”、“% Time in Jit”、“# of Methods Jitted”和“# of IL Bytes Jitted” " 暂存站点的计数器(不应获得任何流量)在 20-50 分钟内不会提取数据,之后“IL Bytes Jitted / sec”会立即出现峰值,“% Time”会出现跳跃在 Jit 中" 2-20 分钟,主站点最高可达 99%。

如果有人对可能导致此问题的原因有任何想法,或者有过类似问题的经验,我将不胜感激。

谢谢!

4

1 回答 1

0

这是一次疯狂的尝试,因为我最近遇到了类似的问题(不完全相同)。

您是否在服务器启动时使用/3GB标志?

即使您不是,您也可以通过 perfmon(在 Memory 下)查看 Free System Page Table Entries。您应该可以访问 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 回答