第一天上网:如何不杀你的网站

假设你有这个奇特的新网站,有大量的数据(比如大图片),你就要把它放到网上。 如果你做了“太多”的宣传,在开始的几天里,网站就会被要求淹没。

我怎样才能减轻这种风险?

我想过了

  • 像SO和SF一样逐渐生活:“私人”公测,公开testing
  • 允许X. 连接 会话同时进行,所以连接的用户仍然有很好的网站体验,其他人都有一个很好的道歉信息

我不能:

  • 购买更多的服务器,因为在第一天之后,网站的stream量会less很多:)

  1. caching尽可能多的。 任何dynamic创build的页面都应该被caching,这样用户才能获得一个静态的版本。 在查询数据库的页面组件也应该被caching。
  2. 尝试使用像Amazon S3这样的外部服务来提供图片和多媒体服务(如果网站突然遭遇大量stream量,可以使用它)。

由于Jeff和Joel博客的stream行,他们已经有了内部的宣传和需求,所以逐渐走向了SOF和SF。 如果你没有像他们那样有一个近乎保证的用户群,那么逐渐上线可能是致命的。

我会避免限制并发会话,因为很难定义由于不活动而导致的会话结束。 如果用户离开15分钟,并尝试重新加载他们的页面,只是为了得到一个错误消息 – 你只是失去了一个用户。

你的数据模型有多less计划? 您是否devise了一个架构,可以让您在不使用昂贵sorting,二进制列或复杂联接的情况下提高查询量? 你有没有调整你的数据库后端(假设你有一个)?

你如何服务你的“大影像”? 你可以把它分成一个单独的Web服务器进程,甚至是一个单独的域?

你有没有加载testing你的系统? ApacheBench和Siege等工具是非常宝贵的。

所有你在svn的configuration? 你的部署是否自动化? 当你不得不将应用程序推出到第二台服务器时,你会很高兴。

邀请系统有时可以是控制用户对网站的吸引力的好方法。 在开始的时候传出一定数量的邀请,这样网站就不会变得不堪重负。 然后给每个用户一些邀请传递给其他人,慢慢build立网站上的用户数量。 这样一开始你就不会有太多的人撞到这个网站,而且你没有得到大量的stream量。

不利的一面是,你可能会在开始时拒绝许多没有邀请的用户,以及以后可能不会返回的用户。 除非你有一个很好的网站,人们很兴奋使用,那么这可能是一个坏的举动。 这真的取决于网站。 另外,您实际上还需要一些额外的开发时间来添加邀请系统。

我会确保你在启动之前有一个强大的监控基础设施。 你需要有数据来决定你的决定 – 这意味着测量服务器上的CPU负载,检查你的负载是否平均分布在各个盒子上,如果有什么东西融化了,你就知道它是哪一个。

了解问题出在哪里将大大缩短响应时间。 我看到有太多的网站没有任何forms的监控,打算在晚些时候build立起来……火灾发生后。 这是非常错误的。

您可能希望查看第三方托pipe的静态内容,如Amazon S3。 这可能是值得的,这取决于您的应用程序也使用Amazon EC2云(一样我讨厌stream行语)。

一些托pipe服务提供商允许您在最大容量的情况下testing私有服务器一段时间,然后在试用期之后以合理的容量进行安置。

DreamHost就是一个例子:
http://www.dreamhost.com/hosting-vps.html