Yapache-Yahoo! Apache 的秘密

作为世界上 NO.1 的 Web 站点,Yahoo!Web 服务器定有独到之处. 这也应该是很多 Web 技术人员关心的一个问题。

前一段时间, Yahoo! 架构软件组的技术经理 Michael J. Radwin 在 OSCON 2006 上作了一个题目为 Hacking Apache HTTP Server at Yahoo! 的报告,透露了很多关于 Yahoo! Apache 的技术信息。

Yahoo! Apache = Yapache , 这是雅虎内部使用的名字吧。发音是(why·apache)(注:根据下面的留言,读音应为[ya`pache])。 YApache 是基于 Apache 1.3 进行 hack 的,目前在向 Apache 2.2 迁移(Prefork Multi-Processing Module ?)。 Michael 介绍说构建 YApache 的原因有三个:

1) 安全性;
2) 节省带宽;
3) NETSCAPE GUIDE BY YAHOO--这是 97 年的时候 Yahoo! 与 Netscape 联合推出的 一个互联网信息与导航服务,需要用到富媒体内容,当时的 Apache 对这样的内容支持较弱,所以雅虎不得不动手改造 Apache (要知道97 年的时候 Netscape 就好比现在的 Google 啊)。据说这才是主要原因。

Apache 1.3 的功能对雅虎来说已经够用 (在 98 年对 yapache 添加了 gzip 的支持),所以这个版本一致用到现在。YApache 的一个倾向性的原则是用进程而不用线程,相对比较保守,不过这样选择的原因也是很明显的:进程更加稳定,线程对与程序员来说,更容易引入新的问题。

接下来 PPT 描述了一些关于 LOG 格式的内容,继续看下去,我感兴趣的是关于配置参数 StartServers / MaxSpareServers / MinSpareServers / MaxClients 的问题。很多 Web 技术人员往往要在这个地方反复推敲。YApache 一般只设置 MaxClients,这个值一般小于 100, 对于 99% 的站点是足够用了。尽量让系统(Yahoo! BSD) Kernel 来处理 Buffer, 在这个地方关于 几个 kernel 参数的设置很有讲究。

关于SSL 的部分我不太感兴趣,倒是最后的 ysar (Yahoo! sar) 看起来是一个有趣的工具.

这样的定制对于 Yahoo! 这样需要大量 Web 服务器的站点来说(现在平均每天接近 40 亿 的 PV),得到的收益无疑是巨大的。对于规模相对较小的 Web 2.0 站点,类似 LightTPD 这样的轻量级 Web 服务器更为适合(比如豆瓣):

$ curl -I www.douban.com
HTTP/1.1 200 OK
Connection: close
Status: 200 OK
Content-Length: 13213
Content-Type: text/html; charset=utf-8
Set-Cookie: dbcl2="MPmAySb0OYE::"; path=/; domain=douban.com; \
expires=Thu, 01-Jan-2009 00:00:00 GMT
Date: Fri, 22 Sep 2006 12:34:16 GMT
Expires: -1
Server: lighttpd/1.4.11

(那些盯着豆瓣页面看的模仿者,很少有人留心豆瓣的运维技术吧)

在线查看这个PPT: Hacking Apache HTTP Server at Yahoo! (PDF Version) (其实这个文档和 05 年的内容基本上是一致的)。

附图:

Yahoo Web 结构概览


Yahoo! Web 结构一瞥.

--EOF--

| | TrackBacks (0) | | Edit

Generator | Trampoline



自定义搜索

本文相关评论|Comments(13)

tinyfool 的评论:

页面在Firefox下是不正常的,dc:title和dc:description被显示出来了
--------
可惜GoogleWebServer好像一直没有公开的信息,不然可以比较比较,应该很好玩

Fenng 的评论:

[ 与 ] 这两个字符 造成了问题

URL 中的两个 -- 也有问题

Fenng 的评论:

好久没有遇到 MT 的 Bug 了,还是借助 W3C valied 服务看出来问题所在

多谢!

Che Dong 的评论:

我听到的发音怎么都是 Ya Pache?

Fenng 的评论:

why·apache 是 Michael J. Radwin 文档里说得呀

neo 的评论:

好象yahoo的工程师读[ya`pache]

zysno1 的评论:

为什么要关注豆瓣的运维?

压根没觉得豆瓣有什么运维。豆瓣的网站中断服务也不是新闻了。

搞得好像豆瓣像google一样牛。

豆瓣的UI出色,不代表它一切都好。不过是评论社区而已。。。。。。。

Fenng 的评论:

服务器的高效, Apache 的技巧

其实差别很大的

很多人认为这根本不是什么问题

Leo 的评论:

curl -I www.leoneo.com
HTTP/1.1 200 OK
Content-Type: text/html
ETag: "-458838256"
Accept-Ranges: bytes
Last-Modified: Wed, 16 Aug 2006 16:34:13 GMT
Content-Length: 10359
Date: Wed, 11 Oct 2006 12:33:57 GMT
Server: leoghttpd

这是什么?

Fenng 的评论:

leoghttpd ?
你自己定制的?

大徐 的评论:

确认neo的说法,至少雅虎中国读[ya`pache],雅帕奇

RainX 的评论:

在雅虎中国的确念 [ya`pache]的多, 但是我去雅虎美国培训的时候,那边的工程师大多数都读 [why'apache]

在线代理 的评论:

不知道yapache有没有代码可以下载的。

添加评论

关于这篇文章

这篇文章由 Fenng 于 September 22, 2006 8:39 PM 发布

上一篇:cURL Tips

下一篇:Blog 剽窃是我最反感的事情

回到首页查看最近的文章或者是查看所有归档文章

DBA notes 的订阅数量,点击则可进行订阅
Feed 订阅数量,点击即可订阅最新内容