Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';每个CPU或每个内存的ASP.NET会话的典型平均数是多少?_Asp.net_Performance_Session - Fatal编程技术网

什么';每个CPU或每个内存的ASP.NET会话的典型平均数是多少?

什么';每个CPU或每个内存的ASP.NET会话的典型平均数是多少?,asp.net,performance,session,Asp.net,Performance,Session,(编辑:改写问题以使其更清楚,意思没有改变) 您可以创建应用程序并测量其使用情况。但是,我想知道的是,如果您预先决定一个ASP.NET应用程序,那么一台机器通常可以同时容纳多少用户(会话) 让我们假设以下默认简化设置:Inproc会话、ASP.NET3.5、NHibernate+L2缓存、购物网站(会话中的购物篮属性) 虽然我可以确定会话不会超过20kB,但我的经验表明,即使使用布局良好的应用程序,总的来说也会有巨大的开销。我在寻找你可以在便笺上做的简单计算 对于奖励:忽略带宽要求,您会为每个X

(编辑:改写问题以使其更清楚,意思没有改变)

您可以创建应用程序并测量其使用情况。但是,我想知道的是,如果您预先决定一个ASP.NET应用程序,那么一台机器通常可以同时容纳多少用户(会话)

让我们假设以下默认简化设置:Inproc会话、ASP.NET3.5、NHibernate+L2缓存、购物网站(会话中的购物篮属性)

虽然我可以确定会话不会超过20kB,但我的经验表明,即使使用布局良好的应用程序,总的来说也会有巨大的开销。我在寻找你可以在便笺上做的简单计算

对于奖励:忽略带宽要求,您会为每个X同时用户的管理层建议什么样的CPU/Mem。也就是说,答案可能是:在2GHz Xeon和1GB mem、Win2k8上,您可以安全地同时服务500个会话,但更高的是,它需要仔细规划或更多的硬件。您知道代码的“质量”吗

坏代码可能会在硬件上花费巨大,而好代码则不会花费任何成本

根据评论进行更新

几年前,我不得不维护一个糟糕的应用程序,它使用500兆内存(有时是1.5兆内存),需要几分钟来显示内容,我不得不重写整个过程,在那之后,它只需要占用必要的内存量(接近10-15倍),而且显示速度很快,我这里说的是毫秒

内存中错误的循环和严重缓存数据的数量是。。。令人难以置信的悲伤。我只想告诉你,我在内存中有3个版本的数据库(真实数据库有4个版本),代码必须一个接一个地更新所有版本。应用程序中的所有其他内容都基于内存中的版本

总之,最后。我删除了25000行代码

代码的质量非常重要

第二次更新

第三次更新

在我目前正在开发的一个应用程序中,asp.NET3.5使用LINQtoSQL与SQLServer2005对话(当然)。很多人读数据库,但没有那么多人写

在我自己的开发机器,这是旧的p4普雷斯科特与3千兆内存。加载整个页面平均需要20毫秒到100毫秒,具体取决于哪个页面:-)

会话(内存使用)非常低,肯定低于20k

如果我从这里开始,我的糟糕的数学将是

如果我同时有100个用户,加载一个页面大约需要2秒,在会话期间至少需要2兆ram

需要糟糕的数学吗?你需要一个用户做什么,然后,让一个用户乘以你应该处理的内容


我不认为有任何其他方法可以找到答案。因为同样,页面下的代码也很重要。

这在很大程度上取决于您在服务器上做了多少工作。一些应用程序可能达到100,而其他应用程序只能达到10。

你显然明白这取决于应用程序,了解应用程序能做什么或支持什么的最好方法是测量它。在过去,我使用了微软的交易成本分析方法,得到了一些相当好的估计。我曾经在Site Server Commerce Edition 3.0中使用过它,今天又在现代ASP.net应用程序中使用过,它运行得相当好


是Microsoft《改进.Net应用程序性能和可伸缩性》一书中的一个片段,它详细介绍了可用于性能数据(CPU使用率、IIS计数器等)的公式,以计算站点上可支持的用户数。我无法发布该书的第二个链接,但如果你在Google/Bing上搜索scalenet.pdf,你会找到它。希望这对你有所帮助,因为你正在寻找一个真正的#,我会提供给你一些。我们正在使用ASP.NET MVC创建一个安全的人力资源应用程序。与您一样,我们希望获得最大并发连接的良好体验,我们将其定义为10秒内服务的最大页面数(假设用户等待页面的时间不会超过10秒)

因为我们在寻找一个上限,所以我们使用了一个非常简单的页面。SSL+一些会话变量。在双Xeon四核(总共8核)上,16GB内存和SQL Express作为后端,我们能够达到约1000个“并发”连接。虽然内存和SQLExpress都不是限制因素,但我们的测试主要是处理器和I/O。请注意,我们没有使用缓存,尽管对于购物车,我怀疑您也不会使用缓存。此页面访问数据库约3次,并发送了约150KB的数据(大部分为png图像,未缓存)。我们验证了创建了1000个会话,尽管每个会话都很小


我们的观点是1000可能是不现实的。包括包含业务逻辑和真实用户数据的页面在内的测试显示,最多有200个并发用户。然而,一些用户还将运行报告,这可能会占用整个核心长达30秒的时间。在这种情况下,9个并发报告用户基本上会使系统不适合其他用户。这是其他海报的要点。。。您可以随心所欲地获取其他性能,但您的系统可能会根据其功能表现出完全不同的行为

我同意,但10秒或100秒听起来不太合理,应该考虑数千甚至数万,或者是吗?好的观点。但仅仅是代码的质量并不是衡量CPU或内存使用的真正标准(如果可以衡量的话)。谢谢你的编辑,+1。我从来不是说质量不重要。这非常重要。然而,糟糕的代码往往无法很好地度量。好的代码可能包含坏的bug(最近一个愚蠢的小线程问题导致不可预测的巨大内存增加的例子):非常好的代码,只有一个bug,巨大的后果,但我正在漂泊。