如何获取会话中对象的大小

时间:2016-07-21 15:39:12

标签: c# asp.net session

我们有一个ASP.NET Webforms应用程序,目前我们将会话数据存储在State Server中。现在我们希望增加应用程序的会话超时时间。

这当然是可能的,但为此我们需要计算新的硬件要求。

因此我们需要查看会话中存储的对象的大小。能否请您建议任何可以帮助我们识别会话中存储的各种对象大小的方法/工具。

非常感谢任何帮助或指示。

2 个答案:

答案 0 :(得分:1)

不,在这种情况下,您将在存储到会话之前计算对象并创建总内存占用量大小。请参阅此处了解如何获取对象的大小

How to get object size in memory?

答案 1 :(得分:1)

  

我们需要查看会话中存储的对象的大小。

在State Server中,您无法看到单个会话的大小。

但是,您可以在任务管理器中查看 aspnet_state.exe 的全部内存使用情况。我相信这足以确定新服务器需要多少内存。

如果您需要非常详细的信息,您希望启动新的SQL Server (仅几小时到几天)来存储会话状态,然后查询以下内容以获取单个会话状态对象 -

SELECT [sessionid],[created], datalength(SessionItemLong) 
FROM ASPStateTempSessions

其他想法

如果您要创建一个完整的新环境,我建议您查看也在Windows Azure中使用的StackExchange's Redis Cache