(编辑:重写的问题,使其更清晰,意义没有改变)
您可以创建应用程序并测量其用法。但我想知道的是,如果你决定关于ASP.NET应用程序的预先,那么通常会有多少同时用户(会话)适合一台机器。
让我们假设以下默认的简化设置:Inproc会话,ASP.NET 3.5,NHibernate + L2缓存,购物网站(会话中的篮子属性)。
虽然我可以确定会话不会超过20kB,但我的经验告诉我,即使是布局合理的应用程序,也会产生巨大的开销。我正在寻找你可以在便利贴上做出的简单计算。
对于赏金:您会为每个X同步用户建议您的管理层使用什么CPU / Mem,而忽略带宽要求。即并且答案可能是:在具有1GB内存,Win2k8的2GHz Xeon上,您可以安全地同时提供500个会话,但除此之外,它需要仔细规划或更多硬件重新
答案 0 :(得分:8)
你知道代码的“质量”吗?
糟糕的代码在硬件上可能会花费巨大而良好的代码却无需花费任何费用
根据评论进行更新
几年前,我不得不维护一个应用程序很糟糕,它使用500兆内存(有时1.5克),并花了几分钟来显示东西,我不得不重写整个事情,之后,它只是获取必要的内存量(接近10-15倍)并快速显示内容,我在这里说毫秒。
循环,严重在这是做错了内存高速缓存数据的数量是令人难以置信的...伤心一下。只是告诉你,我在内存中有3个版本的整个怪胎数据库(所以4个真实的数据库)并且代码必须一个接一个地更新所有版本。应用程序中的其他所有内容都基于内存中的版本。
无论如何,到最后。我删除了25000行代码。
代码的质量 IS 很重要。
第二次更新
第三次更新
在我正在开发的应用程序中,asp.net 3.5使用linq来与sql服务器进行sql谈话(当然)。很多读取数据库并没有那么多写入。
在我自己的开发机器上,这是旧的p4普雷斯科特与3演出的ram。加载整页平均需要20ms到100ms,取决于哪个页面: - )
会话(内存使用率)非常低,肯定低于20k
如果我离开这里,我的糟糕的数学将是;
如果我有100个并发用户,则加载页面大约需要2秒,并且在会话期间将使用至少2兆的内存。
需要糟糕的数学? 1个用户需要什么,只需1个用户乘以WhatYouThinkYouShouldBeAbleToHandle
我认为没有其他方法可以找到答案。因为,页面下的代码也很重要。
答案 1 :(得分:8)
既然你正在寻找一个真实的#,我会给你一些。我们正在使用ASP.NET MVC创建一个安全的HR应用程序。和你一样,我们希望获得最大并发连接的良好感觉,我们将其定义为10秒内服务的最大页数(假设用户不会等待超过10秒的页面)。
由于我们正在寻找一个上限,我们使用了一个非常简单的页面。 SSL +一些会话变量。在双Xeon四核(总共8核),16GB内存和SQL Express作为后端,我们能够达到~1,000“并发”连接。无论是内存还是SQL表达都不是限制因素,它主要是处理器和处理器。我们测试的I / O.请注意,我们没有使用缓存,但对于购物车我怀疑你也会。这个页面打了〜3次数据库,并发送了~150KB的数据(大多是png图像,未缓存)。我们确认创建了1,000个会话,尽管每个会话都很小。
我们的POV是1000可能不切实际。包括具有业务逻辑和真实用户数据的页面的测试显示最多约200个并发用户。但是,一些用户也将运行报告,这可能会使整个核心咀嚼长达30秒。在这种情况下,9个并发报告用户基本上可以使系统不适合其他人。这是另一个海报的要点......你可以随心所欲地获取其他性能#,但你的系统可能会根据它的行为完全不同。
答案 2 :(得分:2)
您显然理解这取决于应用程序,了解应用程序可以执行或支持的最佳方法是衡量它。在过去,我使用了微软的交易成本分析方法来获得一些相当不错的估算。我已经在Site Server Commerce Edition 3.0和今天的现代ASP.net应用程序中使用它,它运行得相当好。
此 link 是Microsoft提供的“改进.Net应用程序性能和可伸缩性”一书的摘录,它详细介绍了可用于性能数据的公式(CPU使用率,IIS计数器等)计算您可以在您的网站上支持的用户数量。我无法发布该书的第二个链接,但如果您在Google / Bing上搜索scalenet.pdf,您将找到它。希望这有帮助
答案 3 :(得分:1)
这在很大程度上取决于你在服务器上做了多少工作。有些应用可能会做100个,有些只有10个。