`
robbin
  • 浏览: 4798082 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
377a9ecd-1ea1-34ac-9530-9daa53bb2a7b
robbin谈管理
浏览量:135695
社区版块
存档分类
最新评论

豆瓣的程序性能真的很惊人,但...

    博客分类:
  • Tech
阅读更多
http://www.dbanotes.net/arch/douban_web_server.html

在老冯同学的博客上看到的文章。里面介绍说豆瓣网站的情况如下:

一台Web服务器运行Lighttpd,每天处理2500万个request,峰值每秒处理1000个request;
一台应用服务器运行Python,每天处理500万PV;
数据库服务器运行MySQL,负载情况没有介绍。

我对比了一下JavaEye网站的服务器运行情况,我们是一台Web+应用服务器,一台数据库服务器,如下:

Web服务器运行Lighttpd,每天处理430万个request,峰值每秒处理150个request,平均每秒处理50个request;
Web服务器运行Ruby 1.8.6 + Rails 1.2.6,每天处理70万动态请求(去掉404,301状态的请求,只统计200的),如果算PV的话,去掉RSS订阅请求,AJAX请求,估计PV在60万左右;
数据库服务器运行MySQL,CPU负载不高,在5%-30%之间波动。

豆瓣的Lighttpd峰值每秒处理1000个request,到不让人觉得意外,因为Lighttpd本身就是设计能够并发处理上万个request的。但是豆瓣用单台服务器支撑500万动态请求,确实是很惊人的数据!看阿北介绍说,豆瓣的应用服务器是一台单颗双核AMD Opteron,JavaEye的Web服务器是两路老的单核的AMD Opteron,主频是2GHz,豆瓣的应用服务器是新的单颗双核AMD Opteron,主频不详。

目前JavaEye的Web服务器运行Lighttpd,Memcached,Email Server和Ruby的FastCGI,除了ruby之外,其他应用消耗的CPU资源都极少,Web服务器在峰值期间的CPU负载在35-50%之间波动,非峰值期间回落到20-30%。假设应用程序不做针对性优化,我估计这台服务器可以支撑到100万到120万PV,但要更高就很困难了。不过JavaEye要达到这样的访问量,估计还得一年时间。到那个时候再想办法也不迟。不过设想到这样的程度,我到宁愿加一台服务器立马解决问题,而不是投入人力去费时耗力的优化程序代码。

豆瓣使用的Python性能要比Ruby好很多,但即便如此,在同样硬件条件下,用Python支撑到500万以上,也是非常困难的,可以想像的是大量运用了页面的局部缓存,以及对程序和框架的优化达到了极致,这一点,不得不佩服豆瓣的技术人员的性能优化水准和所下的功夫。

不过,对于豆瓣只用一台应用服务器支撑500万PV,我觉得没有必要。豆瓣有2000万人民币的投资,增加一台服务器一次性开支不超过1.5万,每年托管费多支出0.5万而已,九牛一毛。但在今天一个资深程序员月薪都要超过1.5万的情况下,为了节省这点钱而需要对应用程序进行深度优化而投入的人力成本,远远超过2万元。豆瓣新版本刚上线的一段时间之内,网站访问速度非常缓慢,最近速度慢慢的提升上来了,似乎也从侧面证明了这一点。干吗不多部署几台应用服务器,让用户从一开始就享受良好的速度体验呢?而用一台应用服务器支撑,等着优化程序代码来提升访问速度呢?CSDN网站每天有600多万访问量,比豆瓣的访问量略高一些,CSDN有30多台服务器,其实服务器少不见得就有多好,服务器多也不见得就是什么坏事。用投入硬件的方式可以解决的性能问题,总是会比软件优化方式来得成本低。

43
9
分享到:
评论
26 楼 mmiwwcom 2009-05-03  
让人解决问题还是让机器解决问题,这是个问题。
25 楼 zsslxy2006 2008-06-27  
做技术的,很多都是完美主义者。Maybe 他们的开发团队也是追求完美者。不过有这成就真是服了。
24 楼 PatrickHe 2008-02-16  
引用
一天500pv,也就是60req/s,从一开始设计就考虑性能优化我想还是可以达到的,特别是针对douban这样难得并不如何复杂的页面。


一天的访问不是平均分布的,就一般网站而言,基本上50%的访问量会集中在三五个小时内。
23 楼 brucectl 2008-01-24  
CSDN不稳定,是他们开发和系统人员无能好吧!
22 楼 huangpengxiao 2008-01-22  
robbin 你无意间给豆瓣做了广告。。。。
21 楼 step21 2008-01-21  
单纯投入来说是少了,可是你多买了几台服务器浪费多少资源?从环保角度来说还是从代码优化好点.
20 楼 laiseeme 2008-01-21  
为了环境,我们要省电,为了省电,我们要少用服务器
19 楼 白发红颜 2008-01-19  
呃,我们的服务器也有名字的,分别是superman, Batman, spiderman...还好我们的服务器不多, 不然起名字也很头疼啊~~
18 楼 hax 2008-01-19  
最后的例子举得太失败了。CSDN有30台服务器照样极不稳定。

在去年11月的sdchina2上,我曾经问杨勃,豆瓣是否做了大量的页面静态化的工作,杨予以了否定,使我大为惊讶。因为时间关系没有就这个问题深入下去。有机会的话,真想看看他们的架构和源码。
17 楼 ken1984 2008-01-19  
它的程序用的什么框架?
16 楼 lordhong 2008-01-19  
这么有钱,服务器还这么抠门??
那台web server如果是硬件failure不久直接over了?连backup都没有?
cluster除了增加redundancy外,还起到备份左右
15 楼 nihongye 2008-01-19  
机器容易买到,知识经验需要积累,虽说成本大,多尝试是好事。
14 楼 swachian 2008-01-19  
搜索到这么一片文字:
引用
豆瓣所有的服务器都以指环王里的人物为名,大家各司其职:佛罗多早已从前台退役,现在作为开发和测试用机;梅里(Merry)和山姆(Sam)这两个霍比特人挑起了大梁,承担起所有用户的请求,向豆友们展现丰富多彩的页面;四个神仙级的精灵:双胞胎爱隆(Elrond)和爱洛斯(Elros),森林女王凯兰崔尔(Galadriel)和灰港之主瑟丹(Círdan)用他们伟大的智慧和不死的生命保护着用户的所有数据;爱隆之女,美丽的亚玟公主(Arwen)帮助用户迅速搜索到想要的信息;另一个霍比特人皮聘(Pippin)和英俊的精灵王子勒苟拉斯(Legolas)执行着一些后台任务;人皇阿拉贡(Aragorn)和刚铎摄政王的儿子波罗莫(Boromir),这两个强壮的人类和矮人金雳(Gimli)一起,承担着数据挖掘的重担;而波罗莫的弟弟法拉墨(Faramir)则逐步接管起图片的显示。运行着英文版豆瓣和豆瓣blog的服务器在美国,由于它离我们比较远,因此我们用中土世界跑得最快的马命名它——甘道夫的坐骑影疾(Shadowfax)。


如果按某种说法
引用
merry就是lighttpd服务器,sam就是应用服务器,跑python
,那么我推测4个精灵应该就是存放数据库缓存的了,并且推测也是独立的服务器。

优化网络服务的关键在于ipc。
13 楼 comeon 2008-01-18  
去豆瓣网试了一下,注册了一个用户,哇,真不错。 努力,希望有一天也可以加盟。
12 楼 comeon 2008-01-18  
优化代码是本,添置服务器是辅啊。 试想GOOGLE要是不优化代码每天要浪费多少资源?再看看现在的QQ2007, 可以知道要想做到世界一流,都得下功夫的。。。。。
垃圾代码是成就不了一流软件的
11 楼 metaphy 2008-01-18  
还真别提CSDN;有时候我真为CSDN感到脸红
一个“号称中国最大的IT社区,为IT专业人员打造。。。”的地方,网站建设的技术问题一堆一堆的,尽管现在它看上去在逐渐变好,但依然一堆问题

这也是许多人弃之不上的原因之1吧。。。
10 楼 lin_style 2008-01-18  
您的想法无错
属于商人想法

如果想产生一些自主的东西,没核心技术怎么行? 就拿龙芯说事,非要建一个超大矩阵,然后放个垃圾软件在上面跑。对外宣称多强多强??

这怎么能是多加一点投资就说过去的?

上面一位兄弟说的就比较中肯,双管齐下。

我更希望中国程序员有DOUBAN的精神,多拿点自己的核心出来。
9 楼 avaj 2008-01-18  
处于程序员的情节吧,总是希望自己能够对程序进行最优化!
8 楼 dante 2008-01-18  
作为一个开发人员  不应该用最少的机能最多的事吗
7 楼 yuhai.china 2008-01-18  
请问robbin,资深程序员您是怎么定义的?

相关推荐

Global site tag (gtag.js) - Google Analytics