服务器 频道

建站攻略:低成本服务器优化 应对大流量访问

    【IT168 专稿】今天,我们要来分析一个外国网站www.incredimazing.com。其实,也不是什么著名的大网站,这只是一个成立不久的图片欣赏网站。虽然站点不大,而且是图片站(比起文字,图片可能需要占用更多的流量和存储空间),但是当我登陆这个网站的时候,感觉这个站点速度非常快,浏览流畅,完全没有因为跨国路由而变得缓慢。上周,该图片网站中的一篇《新基督科学读本》的漫画以幽默的风格深受读者喜爱,从而也被www.digg.com 进一步挖掘,这使得整个网站流量激增。


    你可以看到上图,这是上周日(1月6日)的流量统计,周日大约已经达到了55万左右。可能读者对于55万流量(以pageview计量)的概念并不是特别清晰。我们在此加以说明,下图是图片站incredimazing和it168点击率的排名的比较情况。


    当然,领域不同,国家不同,这和it168并没有直接的可比性,而且由于alexa排名工具条本身是英文的缘故,同样流量的英文网站排名普遍高于中文网站。 ${PageNumber}    但不管怎么说,这个网站最近有了较大的流量,这个流量也的确超出了站长早先的预期。那么该网站的服务器是不是能够经受得住大流量的考验呢?下面我们就具体分析一下该网站的架构。

    首先是硬件部分:

    Incredimazing的服务器是托管在主机商层级科技(layeredtech),两台服务器构成了该站点的全部硬件设施。

Web/应用服务器

    * 费用: $127 / 月.
    * CPU: Intel P4 – 2.8GHz
    * 内存: 2GB
    * 流量限制: 1500GB (该站点使用通常还不到带宽供给的25%)
    * Uplink Port: 10Mbps
    * 硬盘: 80GB x2
    * 操作系统: Fedora Core 4

数据库服务器

    * 费用: $242 / 月.
    * CPU: AMD CPU Dual Core Athlon 3800一颗
    * 内存: 2GB
    * 流量限制: 2000GB
    * 硬盘: 500 GB x2 in SATA RAID 1
    * Uplink Port: 100Mbps
    * 操作系统: CentOS 4.x X86_64 Bit

    注:两台服务器均配备了双网卡,两台服务器以一台自用的交换机连接。

    软件的使用:

    * Ruby: 1.8.4
    * Rails: 2.0.2
    * MySQL: 5.0.27 standard
    * nginx (web服务器): 0.4.13
    * mongrel: 1.0.1
    * mongrel_cluster: 0.2.1

    对于如此大的流量而言,站点在硬件方面的简约配置的确很出乎意料。我们知道Intel P4 经常被用于服务器,而AMD的Athlon使用相对较少。不过在这个案例中,我们发现数据库服务器的CPU就是一个民用的Athlon 3800,给出的表现也十分优秀。
${PageNumber}    而软件方面,该站点采用了nginx作为web服务器,nginx是一款极小的web服务器,最初由Igor Sysoev开发。在incredimazing当中,尽管工作负荷十分大,但是nginx却仅占用20MB上下的内存。这个网站的良好运营,着实也打消了我对nginx服务器的一些顾虑。当然,我不是特意做广告,你建立站点的时候,也完全可以采用Apache2等其他轻质应用服务器。除了nginx,我认为Rails2.0也是该网站得以很低的配置承载巨大的流量的原因之一。虽然宣传的很少,但是相信Rails2.0比起 Rails1.0有了很多的提升,得以让用户有更好的稳定性和灵活性。所以我个人的建议是,如果可以,尽快升级到Rails2.0环境。Rails的效率可能很高,但Rails解释性的特性让却不能让人满意,必须充分利用缓存来补充。但是缓存的清理很麻烦,一般我们都将其稍稍改进,例如,可以设定30分钟的缓存清理时限,30分钟清理代码如下:

def index when_fragment_expired 'causes_list', 30.minutes.from_now do @causes = Cause.find_all_ordered end end
    这样就不用担心何时清理缓存的问题了。

    软件方面的另外一个特点,是该站点采用了mongrel作为http服务器。Mongrel是一款非常轻质化的http服务器,Mongrel相比Rails自带的纯Ruby服务器Webrick速度快很多并支持并发访问,常被视为Ruby的Tomact,Zed Shaw最初编写了这个服务器,暂时在中国的普及还是相对有限。可以感觉,整个站点是精心设计的,全部都以轻质化为出发点。该站点一共采用了7个mongrel来负担55万次的流量。7个mongrel是这次调查之前就已经配置好的,不过也完全可以重新配置。整体而言,该站点轻质化做得非常到位,我反复的测试了这个网站的反应速度,尽管是国外站点,但是几乎感觉不到任何延迟。

    由此配置下来,Ruby on Rails应用可以轻松的应对55万/1天的流量,而每个月的开销还不到400美金,这甚至还包括了数据库服务器的磁盘RAID1冗余,而且带宽资源利用率还仅为25%。这样看来,如果你也按照incredimazing配置服务器和软件,那么你将轻松的处理55万的访问量。当然,我们所说的55万流量也并非是这组服务器能承受的上限。我感觉55万离流量,离上限还有一些空间,不过这暂时还无从证实。其实,很少有网站创业初期就能达到10万、20万的访问人数,相信随着incredimazing的漫画从digg首页排名逐渐滑落,其访问量可能将有所下降。

    最后,我们不妨估计一下收入情况:美国广告联盟每千次的访问价格大约为3美金,而55万流量则意味着该站点的月收入可能超过5万美金。而所有的成本加起来还不到400美金。其实,本文只是一个例子——简化不仅限于独立站点,企业内部的服务器也如此,如果真正能够切实按照需求来精心简化配置,我们就能够以更少的投入,得到更多的产出。
0
相关文章