ASP.Net / SQL Server应用程序的负载估算

是否有任何启发式定义典型应用程序的服务器要求? 从内部发展到less数用户,这是我们首次部署互联网应用。 在内部,我们只是根据需要进行部署,监控和采取行动,但由于预算紧张,需要进行远程部署,所以我必须进行更精确的估算。

我有以下来源的参数估计input:

在testing中,我得到: – stream量 – SQL请求的数量

从项目pipe理中,我可以得到预计的总数和同时连接的用户数量。

有一个经验法则,我可以应用这些参数?

没有一个简单的math公式来确定你将面临的负载。 您的负载可以根据以下原因发生戏

  • 查询 – 例如,如果您使用游标,则需要比使用基于集合的操作更多的function。 所需要的只是一个devise不佳的查询来使服务器瘫痪。
  • 索引 – 一个好的DBA可以使应用程序快速执行或慢速执行。
  • 历史数据量 – 随着应用程序长时间运行,可以存储更多数据,这将影响SQL Server返回查询结果的速度。 如果您的应用快速清除历史logging,那就更好了。
  • 硬件调整 – 例如,一个正确调整的SAN可以承受比未正确调整的SAN更多的负载。

有关如何做容量规划的思想stream派,但比一些公式复杂得多。

有很多你需要考虑的variables,所以没有简单的方法来做到这一点。 你需要考虑几件事(除了Brent Ozar的优秀笔记外):

  • 你的数据集有多大? 你预期的增长率和模式是什么?
  • 这些服务将如何分离? 单独的networking和SQL服务器? 你的应用程序可以扩展到每个农场吗?
  • 大部分工作是由应用程序完成的,还是通过SQL查询?

对于一个新的应用程序,部署的最好方法是购买一对显着低于预算的可伸缩服务器。 尽可能慢地推出你的应用程序(例如,自己和几个值得信赖的顾客,然后逐渐将它公开给大众)。

在此过程中,请密切注意您可以掌握的每项绩效指标,以确定您的瓶颈位置。 把你之前储蓄的钱花在开放这些瓶颈上。

这种做法不会让你在一场大风暴中发动,但是这会避免以后的很多麻烦。

没有银弹; 根据应用程序的性质,用户可能会看到更多的负载。 例如,站点上的许多Ajax可以大大增加Web和DB服务器的负载。

我听说每个1GB RAM和Web服务器上的单核CPU有75个并发用户是安全的估计。 所以你的典型的8GB /四核服务器应该处理大量的用户。 如果你到了这一点,带宽也可能开始在你的负载中发挥作用。

我没有太多与SQL Server的经验,但我会想象应用类似的数字。

我不认为你可以应用任何经验法则,除了知道应用程序如何执行的唯一方法是观察应用程序的执行情况。

一定要做负载testing,目标是项目团队预计负载的1.5-2倍。 如果你成功处理这个负载,那么我会继续增加负载,所以你知道什么是重点。

你的web / db平台是什么?

如果您正在使用IIS和SQL Server,Microsoft将为您的网站进行压力testing/容量testing。 IIS工具

本文似乎是testingSQL Server的良好开端。