我遇到了负载平衡问题。我们开发了一个可供近 1500 名用户使用的 Web 应用。随着用户数量的增加,我们无法及时满足请求。加载一个页面大约需要 10 到 20 秒。在负载过大的情况下,可能需要一分钟才能提供页面。
我们需要解决这种情况,以便每个请求在 2 到 3 秒内得到处理。
- 应用程序开发于:asp.net
- 举办地点:IIS 7.5
- 机器配置:Windows 服务器 2008,8GB 内存,1Mbps带宽
答案1
嗯,说真的,你看问题的角度完全错了。现在还不需要去多个服务器。
Windows Server 2008 8GB RAM 1MBPS 带宽
好的,让我们暂时忽略内存不足的问题。
1mbit 带宽太可怜了。重点是,1500 个用户同时在线会使带宽超载。我敢肯定,当你检查时,你会发现你的 CPU、内存和磁盘不是问题,而是你的带宽。
在 1mbit 线路后面放置大量负载平衡的 Web 服务器不会改变这一点。
升级生产线意味着您的服务器可以提供更多服务而不需要更多硬件。
获得适当的带宽,一切都会好起来。如今 1mbit 真的很低。实际上,对于 1500 个并行用户的服务器来说,它一直很低。从来没有奏效。如今的服务器至少应该使用 8mbit 链路,专业情况下则应使用 34+ mbit 链路。托管服务器在技术上不会提供低于 100mbit 的带宽。
如果是钱的问题,那么你就要意识到你完全是在找错地方。你需要更多的带宽。
哦,投票关闭 - serverfault.com
答案2
正如 TomTom 所说,在扩展之前,您需要确定当前的瓶颈。最常见的瓶颈是网络带宽、RAM、磁盘性能和 CPU。您需要进行更多监控,以找出其中哪些(或可能是其他原因)导致了您当前的性能问题。
答案3
您确实需要对这台机器进行一些分析,找出瓶颈所在。我同意 TomTom 的观点,您的可用带宽太低,但您还需要确保没有其他问题。
通过一些基本的性能监控,您应该能够发现硬件层面的问题,但由于这是一个内部开发的应用程序,您确定其中没有编码问题吗?由于不了解应用程序本身,我只能猜测,但您是否优化了代码和数据库访问,是否在适当的地方缓存,是否发现某种资源争用或数据库锁定,随着用户数量的增加,这些问题显然会变得更加严重,等等?
可扩展性来自于良好的硬件设置和编写良好的应用程序,这两个方面需要同时考虑。