【发布时间】:2009-10-11 03:02:21
【问题描述】:
我是生产级 Web 开发的新手,如果这很明显,我很抱歉。我的网站有可能突然激增(永久)用户,我想知道如果在短时间内有太多用户注册会发生什么,导致网站运行缓慢。由于开发需要时间,是否只是向服务器添加更多盒子的情况,还是必须关闭站点以改进代码? 谢谢
【问题讨论】:
-
谢谢大家的回复。我只能将一个标记为答案,但所有答案都很有用。谢谢!
我是生产级 Web 开发的新手,如果这很明显,我很抱歉。我的网站有可能突然激增(永久)用户,我想知道如果在短时间内有太多用户注册会发生什么,导致网站运行缓慢。由于开发需要时间,是否只是向服务器添加更多盒子的情况,还是必须关闭站点以改进代码? 谢谢
【问题讨论】:
不用担心,即使是非常受欢迎的网站也会遇到这种情况。编码好总是一个优点,但有时即使这样也不够。 Twitter 是一个理想的例子,他们开始使用 Ruby 进行消息传递,但随着它们变得越来越流行,不得不转向 Scala。
既然你说你是新手,我能建议你熟悉一下缓存查询和缓存静态内容吗?了解 SQL Server 上良好的索引实践也应该有助于处理大量涌入的用户。
【讨论】:
除了代码改进之外,两者都是首要目标。编写可扩展的代码将最大程度地帮助您。您可以在幕后投入更多的服务器,但使用专为可扩展性而设计的架构良好的代码,您需要做的事情更少。
【讨论】:
取决于您使用的技术以及您编写的代码的编写方式。
由于您标记了 sql-server,当涉及到数据库时,您通常会受到锁定策略和复制架构的限制。如何设计数据库并将其投入生产有很大的影响。必须以任何类型的串行方式发生的事情都是瓶颈。检查你的执行计划,观察和管理你的索引,如果可以的话,复制和分发你的系统。
了解可扩展性限制的最佳方法是通过负载测试和适当的 QA。
如果你做得不对,当你开始 503ing 或超时时,你的用户肯定会不高兴。 :-)
【讨论】:
如果网站的开发方式可以让您拥有多个服务器/数据访问层,那么可伸缩性应该不是问题。
创建应用程序以便您可以根据需要进行加载,并尽可能保持代码的灵活性。
但是根据过去的经验。需要时进行性能调整。编写易于理解和维护的代码,并在发生时修复性能问题。
【讨论】:
我能给出的最佳建议是在您上线之前测试您的应用和服务器,然后您就可以了解何时可能会遇到问题以及问题的严重程度。
说“它会变慢”是一回事,但是一旦超过某个点,您的应用可能会崩溃或随机给用户错误 500 页。
使用自动脚本工具进行测试,以对网站施加压力并模拟注册和随机用户访问随机页面。
如果您有 SSL,请确保您的工具模拟许多不同的 SSL 连接,而不仅仅是不同的 HTTP 请求(SSL 握手需要额外的资源)
【讨论】: