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