豆瓣的 Web 服务器

豆瓣通过使用Lighttpd作为Web服务器,在单台服务器上实现了惊人的500万动态页面浏览量(PV)。该文章详细介绍了豆瓣如何利用Lighttpd达到如此高的并发访问能力,并提及了服务器配置和技术细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原贴:http://www.dbanotes.net/arch/douban_web_server.html

豆瓣的 Web 服务器

豆瓣最近发布新功能有些"疯狂",所以服务器也有新的部署。看到阿北同学在豆瓣广播里说:

豆瓣的第二台应用服务器终于投入了使用。Hongqn 忙了一晚上就完成了部署。第一台服务器支撑到 500 万动态PV/天,服务 On Demand 即时分布式部署......

500 万 PV , 还是动态 PV, 是个很惊人的数字。因为,如果都能达到一台机器支撑 500 万,那么国内稍有点规模的网站(就说动态 PV 上亿的吧),只需要 20 台 Web 服务器就够了。事实上,即使比较强调技术的网站怕也要上百台 Web 服务器的规模。

我们知道豆瓣用 Lighttpd 做 Web 服务器。 从侦测到的数据看,目前线上有两个版本。

$ curl -I http://www.douban.com
HTTP/1.1 200 OK
.....(无关内容略)
Server: lighttpd/1.4.15

另外一个版本:

$ curl -I http://www.douban.com/people/ahbei/
HTTP/1.1 200 OK
.....(无关内容略)
Server: lighttpd/1.4.18

其实豆瓣服务器还有个更为惊人的性能数字。从这个 Powered by Lighttpd 的列表来看,豆瓣在一台 Gentoo 服务器上的记录是 1200 万/天的点击量。这应该是动、静态页面混合情况下的吧。

有同事对这个数据有些好奇,问我到底豆瓣是用啥做的服务器,其实这个问题我也问过阿北,他们就是自己攒的 PC 服务器,然后把性能发挥到极致。阿北也表示过,即使现在豆瓣流量激增个十倍啥的性能也不会是问题。这也是从起始就考虑扩展性的收益吧。

这里这位老兄用 七个 Mongrels 实例(也是一台Server)跑了 55 万 PV (thanks Robin 纠正) 就蛮自豪的,所以豆瓣的一台跑了"500 万动态 PV" 的确非常惊人。

Updated 2008-1-17 0:57:09

阿北留言了。主要是上面的有的数据还是旧的:

Lighty 网站上的数字很久没有去更新了。现在豆瓣的web服务器(lighttpd)每天估计2500万 Hits, 高峰时间大约1000 req/s (这里说的是主要输出HTML/CSS/JS和小图片的一台前端。大图片有另外的web服务器)。
我在广播里说500万PV/天的是应用服务器,就是lighty和mysql之间跑python的那台。现在豆瓣大多数PV来自注册用户,每个页面都需要几到十几种类的动态数据。
现在的服务器只是单片双核的opteron。换4核的话,应该能到一台1000万PV/ 天。

友情提醒,留言很精彩,敬请查看。不过在这个 Blog 上留言的确用户体验很糟糕(我也很烦),相信本周末能得到解决。

--EOF--
| | Comments (11) | | Edit

Generator | Trampoline
<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> <script language="JavaScript1.1" src="http://pagead2.googlesyndication.com/cpa/ads?client=ca-pub-2198040673582211&cpa_choice=CAAQhaT2_gEaCI52gVKP95-sKLGsuIEBMAA&oe=utf-8&dt=1200545755531&lmt=1200543767&format=ref_text&output=textlink&correlator=1200545755531&url=http%3A%2F%2Fwww.dbanotes.net%2Farch%2Fdouban_web_server.html&region=_google_cpa_region_&cc=100&ga_vid=1324801939.1200545756&ga_sid=1200545756&ga_hid=896556195&flash=9&u_h=1024&u_w=1280&u_ah=874&u_aw=1280&u_cd=32&u_tz=480&u_java=true" type="text/javascript"></script> Get Firefox with Google Toolbar for better browsing
<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> <script language="JavaScript1.1" src="http://pagead2.googlesyndication.com/cpa/ads?client=ca-pub-2198040673582211&cpa_choice=CAAQidTQgAIaCEapPfRcsfp6KN2uuIEBMAA&oe=utf-8&dt=1200545756640&lmt=1200543767&prev_fmts=ref_text&format=ref_text&output=textlink&correlator=1200545755531&url=http%3A%2F%2Fwww.dbanotes.net%2Farch%2Fdouban_web_server.html&region=_google_cpa_region_&cc=100&ga_vid=1324801939.1200545756&ga_sid=1200545756&ga_hid=896556195&flash=9&u_h=1024&u_w=1280&u_ah=874&u_aw=1280&u_cd=32&u_tz=480&u_java=true" type="text/javascript"></script> Generate revenue from your website. Google AdSense.

自定义搜索

本文相关评论|Comments(11)

s5s5 的评论:

一秒钟就60次,高峰期*5,也就300次,而且还是还是web服务器,豆瓣的逻辑也不是很复杂,很一般的机器嘛……
^_____^!!!

Fenng Author Profile Page 的评论:

@s5s5

也不知道另外还有谁家的机器能做到 每秒 300个 请求

robin 的评论:

mongrel通常是以cluster方式部署的,类似于fastcgi中proc数.那篇文章应该是指7个mongrel instances, app server只是一台."The domain is hosted at LayeredTech on a dedicated two-server (DB + Web/App) setup."

jesea 的评论:

楼主看看这篇文章,了解一下豆瓣的服务器:
http://blog.douban.com/douban/2007/12/17/105/
感觉楼主的理解不太正确,否则真是这样,1台lighttpd跑500W PV,太NX了,著名的43 things 2005年的资料是30W左右动态PV,需要两台Apache WEB服务器。按这个推算,豆瓣真是神了!阿北所说的应用服务器,可能是指的运行memcache一类的服务器,而不是WEB服务器,这个 "500WPV"的动态PV和应用服务器挂上勾说的有点不伦不类。。。。压力大的是WEB服务器和数据库服务器~,应用服务器只要多点内存,多开几个类似 Mongrel,fastcgi之类的进程就行了~

阿北 的评论:

lighty网站上的数字很久没有去更新了。现在豆瓣的web服务器(lighttpd)每天估计2500万 Hits, 高峰时间大约1000 req/s (这里说的是主要输出HTML/CSS/JS和小图片的一台前端。大图片有另外的web服务器)。。

我在广播里说500万PV/天的是应用服务器,就是lighty和mysql之间跑python的那台。现在豆瓣大多数PV来自注册用户,每个页面都需要几到十几种类的动态数据。

现在的服务器只是单片双核的opteron。换4核的话,应该能到一台1000万PV/ 天。

volcano 的评论:

如果内容都被缓存的话,支持每秒300个请求还是不成问题的。临时查表什么的,支持50个请求就不错了。

Cherife 的评论:

还有一个版本,lighttpd/1.5.0。
为什么我这里看http://www.douban.com/people/ 是1.4.15
douban.net lighttpd/1.4.8
lighttpd 跑静态不错。

Kedy 的评论:

500W,很NB了。如果有机会,Fenng兄愿意帮忙代为请教一下他们的部署情况吗?想请教一下douban的技术团队,我目前用两台机器流量可以做到100w+,lighttpd的性能是一方面,但这应该不是最优秀的地方。

gengmao 的评论:

page view不等于request吧?一个page view恐怕会产生数十个http requests.

ShiningRay 的评论:

老实说

ruby 的性能要比python低不少
目前目前相对来说,ruby运算慢,虚拟机占内存多,加上rails这个框架也肥

而且python还有twisted

虽然貌似这篇文章和这二者无关

Qiangning Hong 的评论:

@jesea

那篇blog说的是豆瓣所有的服务器,里面有这样一句话“梅里(Merry)和山姆(Sam)这两个霍比特人挑起了大梁,承担起所有用户的请求,向豆友们展现丰富多彩的页面”,merry就是lighttpd服务器,sam就是应用服务器,跑python。

@fenng & @Cherife

现在实际上是有三个版本的lighttpd在跑,HTML/CSS/JS/小图片这边会load balance到1.4.15或者1.4.18。大图片用的是1.5.0。

添加评论

<script type="text/javascript"> </script> 直接 匿名评论 或者 登录 评论这篇文章(OpenID、TypeKey...)  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值