假设您有一个漂亮的新站点,其中包含大量数据(如大图像),并且您即将将其放到网上。如果你做“太多”的宣传,在最初的几天里,网站就会被请求淹没。
我怎样才能减轻这种风险?
我想过
- 逐渐上线,如 SO 和 SF :“私人”测试版、公开测试版、公开测试版
- 允许 X
连接同时会话,所以连接的用户仍然有很好的网站体验,其他人有很好的道歉信息
我不能:
- 购买更多服务器,因为在第一天之后,该网站的流量会减少很多 :)
假设您有一个漂亮的新站点,其中包含大量数据(如大图像),并且您即将将其放到网上。如果你做“太多”的宣传,在最初的几天里,网站就会被请求淹没。
我怎样才能减轻这种风险?
我想过
我不能:
逐步上线对 SOF 和 SF 来说是可行的,因为 Jeff 和 Joel 的博客很受欢迎,它们已经有内置的宣传和需求。如果您没有像他们那样拥有近乎保证的用户群,那么逐步上线可能是致命的。
我会避免受到并发会话的限制,因为很难定义由不活动引起的会话结束。如果用户离开 15 分钟并尝试重新加载他们的页面,只是收到一条错误消息 - 你只是失去了一个用户。
您的数据模型做了多少计划?您是否设计了一个架构,可以让您在没有昂贵的排序、二进制列或复杂连接的情况下增加查询量?您是否调整过您的数据库后端(假设您有一个)?
你如何为你的“大形象”服务?您可以将其拆分为单独的 Web 服务器进程,甚至是单独的域吗?
您是否对系统进行了负载测试?ApacheBench 和 Siege 等工具非常宝贵。
您的所有配置都在 svn 中吗?您的部署是自动化的吗?当您必须将我们的应用程序部署到第二台服务器时,您会很高兴的。
邀请系统有时可能是控制用户对网站的使用的好方法。一开始就发出一定数量的邀请,以免网站不堪重负。然后给每个用户一些邀请来传递给其他人,慢慢地增加网站上的用户数量。这样一开始就不会有太多人访问该网站,也不会出现巨大的流量高峰。
当然,缺点是您可能会在一开始拒绝很多没有邀请的用户,并且以后可能不会返回。除非你有一个非常好的网站,人们非常兴奋地使用它,否则这可能是一个糟糕的举动。这真的取决于网站。另外,您实际上必须有一些额外的开发时间来添加邀请系统。
我会确保您在发布之前拥有强大的监控基础设施。你需要有数据来做你的决定——这意味着测量服务器上的 CPU 负载,检查你的负载是否均匀地分布在盒子上,如果有什么东西崩溃了,你知道它是哪一个。
知道问题出在哪里将大大减少响应所需的时间。我见过太多的网站在没有任何形式的监控的情况下启动,目的是稍后……在火灾扑灭后建立它。这是大错特错。
您可能想要研究第三方托管静态内容,例如 Amazon S3。根据您的应用程序,使用 Amazon EC2 还可以云化一些(尽管我讨厌这个流行词)可能是值得的。
一些托管服务提供商允许您在一段时间内以最大容量测试私有服务器,然后在试用期后确定合理的容量。
DreamHost 就是一个例子:
http ://www.dreamhost.com/hosting-vps.html