有关ASP.NET中会话的要点

dis*_*nce 8 asp.net asp.net-mvc session

假设我们有一个拥有10万活跃用户的网站.

如果我们要在会话中保存用户的电子邮件,姓名,姓氏和性别,那么为所有会话分配了多少空间?

会话是否影响服务器RAM,服务器带宽或其他?

请给我一些关于会话功能和服务器上会话过载影响的信息.

mat*_*mmo 3

如果您的模式设置为 ,会话本身将消耗服务器 RAM InProc,这仅受工作进程可用的 RAM 量的限制。

考虑到您的高要求,您需要非常小心在会话中放置的内容,只有在绝对必要时才这样做。不要将内容放入会话中并将它们留在那里以供一两页使用,只需返回数据库并获取它们,否则您的会话大小将急剧增加。

根据您存储的内容,它只有 5kb 甚至更少,因此基于 10 万用户,这将是:

5kb * 100,000 = 488.28MB
Run Code Online (Sandbox Code Playgroud)

所以您会看到,即使您只存储一些详细信息,在该使用级别下,内存使用量也相当可观。

对于如此高的需求和使用率,我会考虑使用专用状态服务器(StateServer模式),它允许您单独管理它并根据需要将资源分配给该服务器。

另一个选项是使用 SQL Server 会话(SQLServer模式),该会话仅受数据库可用大小的限制。所以我们这里讨论的是硬盘空间而不是内存。但老实说,如果您要访问数据库来检索会话信息,那么为什么不直接访问数据库并检索您需要的信息呢?