Results tagged “Apache”

《Apache源代码全景分析》

上半年好像我写了不少推荐序。《Apache源代码全景分析第1卷》已经面市一段时间了。读过这本书的电子稿,先睹为快之后写下推荐序。


如果说没有 Apache 就没有 Internet 可能有些夸张,但至少可以说没有 Apache ,互联网不会发展这么快。根据互联网研究公司 NetCraft 的统计,多年来 Apache 一直是稳居 Web 服务器市场头把交椅,至今仍占据超过 50% 的市场份额。就整个互联网来说,Apache 仍然是最重要的软件之一。

Apache_Source_Code.jpg

尽管近几年来涌现出不少以"高性能"为卖点的新的 Web 服务器软件,比如 LighttpdNginx 等,吸引了不少用户注意力,不过 Apache 因其功能广泛,有些仍具有不可替代性,在技术领域仍然是 Web 服务器风向标。话说回来,"重剑无锋,大巧不工",有的时候软件性能表现不佳,更多原因可能是对其了解不够、使用不当造成,并非软件自身有多大缺陷。 对 Apache 来说,更是如此。所以,通过分析源代码了解 Apache 软件架构体系,熟知其本质,方能更有效的使用 Apache Web 服务器,从而发挥出最大效能。为网站节省资源,为企业节省资金,也能为用户提供更好的访问体验,好处多多。

此外,随着互联网业务的复杂化,很多网站使用 Apache 的过程中也遇到了新的挑战,常常要在业务的驱动下对 Apache 进行扩展性的开发(例如扩展日志模块以便于更复杂的日志统计)。这个时候,源代码分析是绕不过去的一件事儿,尽管源代码获取是轻而易举之事,但 Apache 代码毕竟凝聚了开源软件界的群体智慧,要想高效分析却是并非易事,相信这本书能让有此需求的读者少走弯路,剥丝抽茧,获得更多启发与借鉴。

说起源代码分析,其实几年前市面上出现过一些此类话题的图书,不过基本上是印上大段源代码加上几句注释了事,读者可能会有吃到注水猪肉的感觉。而本书的读者对这一点大可放心,书中代码只是点到即止,相对环保多了。

后记:此书编辑够用心的,这里这个案例可见一斑。

--EOF--

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 年的内容基本上是一致的)。

一时好奇,看看这些大网站的 Web 服务器信息(操作系统/Web 服务器/应用服务器软件).

Google
哪些软件做 Web Server?
除了有两个节点操作系统看出来是 Linux 外,其他的都是未知的. Web 服务器用的都是 GWS ? 我估计是 Google Web Server 的缩写.

Yahoo!
操作系统都是 FreeBSD. 其他的都不可知.Yahoo! 的网络安全据说是一级棒!

微软
操作系统全是 Windows 2003(如果使用 Linux 会被笑死) , 看来 Windows 2000 已经退出微软自己的舞台.Web 服务器用的是Microsoft-IIS/6.0.

eBay
操作系统用:Windows Server 2003 /2000, Web服务器用 Microsoft-IIS/6.0 (5.0). 对这个检测有些怀疑.eBay 大规模使用 Windows ?

GNU.org
操作系统全是 Debian Linux(没错,Debian 是 GNU 正宗传人). Web 服务器: Apache/1.3.31 (Debian GNU/Linux) mod_python/2.7.10 Python/2.3.4 , 也有的配置是:Apache/1.3.26 (Unix) Debian GNU/Linux mod_python/2.7.8 Python/2.1.3.GNU.org 对 Python 用的比较多的.

看看国内的一些公司.

阿里巴巴
操作系统是 Linux . Web 服务器: Apache/1.3.29 (Unix) mod_alibaba/1.0 Resin/2.1.13 .
(+mod_gzip/1.3.26.1a). mod_alibaba 模块估计是专门定制的.

Sina
操作系统是 FreeBSD. Web 服务器都是 Apache/2.0.54 .

百度
操作系统是 Linux , Web 服务器: Apache/1.3.27. 整齐划一.(更新:现在已经换成了 BWS -Baidu Web Server)

搜狐
操作系统居然是 SCO UNIX ,Web 服务器信息: Apache/1.3.33 (Unix) mod_gzip/1.3.19.1a
看来业界传闻"Sohu 的技术力量最差"并不夸张.

网易
操作系统:Linux. Web 服务器信息: Apache/2.0.5x

这些数据是在Netcraft得到的.

分析一下上述数据,可以得到的基本信息如下:

1. Linux vs FreeBSD 半斤八两.很多公司用 Linux , FreeBSD 也不乏拥趸.但开源操作系统做 Web 应用是首选已经是一个既定事实.
2. 关于 Apache ,虽然 Apache 目前还是推荐使用 1.3 版本. 但是很多公司还是使用了 2.0 版.而 Apache.org 自己也全在使用 Apache 2.0 .甚至是 2.2 .
3. Mod_gzip 被一些公司有选择的使用.
4. 技术实力强的公司定制自己专用的模块.

这些判断的前提是 Netcraft 的探测是正确的并且具备代表性.

1

Tags

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