【问题标题】:Best way to determine the number of servers needed确定所需服务器数量的最佳方法
【发布时间】:2010-09-08 18:38:52
【问题描述】:
一台网络服务器可以处理多少流量?判断我们是否超出此范围的最佳方法是什么?
我有一个拥有几百个用户的 ASP.Net 应用程序。它的某些方面是相当密集的处理器,但到目前为止,我们已经做得很好,只有一台服务器来运行 SqlServer 和站点。它运行 Windows Server 2003,3.4 GHz 和 3.5 GB 的 RAM。
但是最近我开始注意到在不同的时间变慢了,我想知道确定服务器是否因应用程序的使用而过载或者我是否需要做一些事情来修复应用程序的最佳方法是什么(我如果我对盒子的期望过高,我真的不想花很多时间来寻找小的优化)。
【问题讨论】:
标签:
asp.net
webserver
capacity-planning
【解决方案1】:
测量,测量,测量。 Rico Mariani 总是这么说,他是对的。
测量请求/秒、RAM、CPU、会话等。
您可能会想出一个缓存策略(输出缓存、数据缓存、缓存依赖项等。)
还可以查看您的 SQL Server 的运行情况...索引是一个很好的起点,但不是唯一要看的东西..
【解决方案2】:
在该硬件上,.NET 应用程序应该能够每秒处理大约 200-400 个请求。如果你只有几百个用户,我怀疑你每秒看到 2 个请求,所以我认为你在那个盒子上有很多容量,即使 SQL 服务器正在运行。
在不了解所有细节的情况下,我会说不,添加服务器不会看到任何性能提升。
顺便说一句,如果你不使用Output Cache,我会从那里开始。
【解决方案3】:
你需要的是Capacity Planning..的一些信息。
容量规划是规划增长和预测高峰使用期以满足系统和应用程序容量要求的过程。它涉及广泛的性能测试,以确定应用程序的资源利用率和负载下的事务吞吐量。首先,您测量站点当前接收的访问者数量以及每个用户对服务器的需求量,然后计算支持当前和未来所需的计算资源(CPU、RAM、磁盘空间和网络带宽)使用水平。
【解决方案4】:
如果您可以使用某些分析工具(例如 Visual Studio 的 Team Suite 版本中的工具),您可以尝试设置一个测试服务器并针对它运行一些合成请求,看看代码中是否有任何特定部分运行时间过长。
在执行此操作之前,您可能应该检查一些随时间变化的 CPU 和内存使用图,看看它是否甚至可以。 (类似于 UNIX“平均负载”的数字可能是一个有用的指标,我不知道 Windows 是否有类似的东西。基本上是每个时间片需要 CPU 时间的平均线程数。)
还要检查明显的情况,即您没有用完带宽。