是否有任何启发式方法来定义典型应用程序的服务器要求?从内部开发到少数用户,这是我们第一次部署互联网应用程序。在内部,我们只是根据需要进行部署、监控和采取行动,但由于预算紧张且必须远程部署,我必须进行更准确的估算。
我对参数估计的输入来源如下:
经过测试,我得到了: - 流量 - SQL 请求数
并从项目管理中获得了预期的总用户数和同时连接的用户数。
是否存在可以应用于这些参数的经验法则?
答案1
没有简单的数学公式可以确定您将面临的负载。您的负载可能会根据以下因素发生巨大变化:
- 查询- 例如,如果您使用游标,则需要比使用基于集合的操作更多的能力。只需一个设计不良的查询即可使服务器瘫痪。
- 指数- 优秀的 DBA 可以使应用程序的运行速度变快或变慢。
- 历史数据量- 由于您的应用程序运行时间较长,因此可以存储更多数据,这会影响 SQL Server 返回查询结果的速度。如果您的应用程序可以快速清除历史记录,那就更好了。
- 硬件调整- 例如,经过适当调整的 SAN 可以比未正确调整的 SAN 承受更多的负载。
关于如何进行容量规划,存在着多种学派,但它比几个公式要复杂得多。
答案2
您必须考虑大量的变量,因此没有简单的方法可以做到这一点。您需要考虑以下几点(除了 Brent Ozar 的出色笔记之外):
- 你的数据集有多大?你预期的增长率和模式是什么?
- 这些服务如何隔离?分离 Web 和 SQL 服务器?您的应用程序可以扩展到每个服务器的服务器群吗?
- 您的应用程序的大部分工作是在 Web 端完成的,还是通过 SQL 查询完成的?
对于新应用程序,最好的部署方式是购买几台远低于预算的可扩展服务器。尽可能缓慢地推出应用程序(即,自己和一些可信赖的客户进行测试,然后逐渐向公众推出测试版)。
在此过程中,密切关注您能接触到的每个性能指标,以确定瓶颈所在。将您之前节省的资金用于解决这些瓶颈。
这种方法不会让您在一场大风暴中启动,但它可以避免以后出现很多麻烦。
答案3
没有灵丹妙药;根据应用程序的性质,您可能会看到用户较少时负载较大。例如,网站上的大量 Ajax 可能会大大增加 Web 和 DB 服务器的负载。
我听说,Web 服务器上每 1GB RAM 和单核 CPU 可同时处理约 75 个用户是一个安全的估计。因此,您的典型 8GB/四核服务器应该可以处理很多用户。如果达到这一点,带宽可能也会开始影响您的负载。
我对 SQL Server 没有太多经验,但我认为类似的数字也适用。