作者文章: Fenng

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

继续阅读

cURL Tips

记录一下使用 cURL 时的一个小技巧.
比如上次举的这个备份 del.icio.us 书签的例子中,因为该页面需要验证, –user YourUserName:YourPassword ,需要提供用户名字和密码,我上次说:

如果想定期备份,又怕密码出现在命令行上,可以考虑把这个命令写到一个脚本里,能提高一点点安全。

其实通过 -K 参数就可以很好的避免这个问题,创建一个文本文件 .pass ,内容如下

--user YourUserName:YourPassword

(把具体的用户名字替换一下) 然后通过:

curl  https://api.del.icio.us/v1/posts/all  -K  .pass

cURL 的功能足够丰富,官方站点的文档也足够全,如何在实际工作中方便、灵活的用到这些功能,需要慢慢磨练。
cURL 也是我 Windows 上安装的命令行小工具之一.
EOF

Opera 90.1 版本? Opera 90.2 版本?

难道软件也要时不时的搞点绯闻才好? Opera 上次升级的时候看到一个 90.1 的版本:
Opera Version 90.1
这次 9.02 升级,这个问题还是存在:
Opera Version 90.2
这么低级的错误倒让人怀疑是不是 Opera 有意为之. 只可惜 Opera 不是大明星,如果是 Google 什么软件的版本这样搞一下,估计全世界都会知道了。

Spam, 这个所有 Blogger 都头疼的问题

今天雅虎中国开始了”搜虫大行动“, 其中一个目的就是为了对付 SPAM,说起 SPAM ,估计很多 Blogger 都恨的牙根痒。
最近我把Blog 的验证字插件 Scode 关掉了。一个原因是为了方便留言的读者,另一个原因是为了减少压力。反正用 Scode 的时候 Spam 留言是狂多的,对 Spam 机器人来说, Scode 验证字没什么用,直接找到留言的脚本发过来信息就成了,这些垃圾留言在后台一样需要手工清理。”死猪不怕开水烫”。
没有想到,我把 Scode 关掉之后,Spam 留言反而少了很多,怪哉。不过有了新变化:HTTP HERD REFER SPAM 多了起来。这一类的 SPAM 的目的就是为了通过 AWstats 的统计结果页面的 Refer 来提高自己页面的 PageRank, 我的 AWstats 统计入口登陆是需要验证的,坚决不让他们得逞。
中外 SPAM 的异同
总体来讲,国内的 SPAM 基本上还属于手工作业的阶段(虽然偶尔也会看到 SPAM 机器人). 而国外的 SPAM 机器人就灵活许多了,很多 SPAM 能够识别我改名后的 mt-comment.cgi 脚本,虽然不需要啥高深的技术含量,但起码能看到人家在改进。国外的 SPAM 机器人试图宣传的站点基本上都是与”赌博,色情”沾边。URL 都是巨长的那种。留言内容的形式风格都很相似,第一句话都是称赞你的 Blog 的,”Great Site”, “Good Blog”, 套套近乎,接下来就是大堆的垃圾信息了.
不知道这些专门开发 SPAM 的家伙都来自哪个国家,但肯定来自中国的非常少,所以说该给咱们的 “chongqed” 摘帽了吧? 现在中国天才们都集中精神研究流氓软件呢,那有时间搞 SPAM 啊。
现在使用的抵挡 Spam 的办法罗列一下:
*) 使用 Movable Type 的 插件 nofollow ;
*) 重命名 mt-comment.cgi 脚本 ;
*) 修改 AWstats 的脚本 awstats.pl, 把 HEAD 过滤条件($field[$pos_method] eq ‘HEAD’)去掉.
Trackback 的 SPAM 不用担心了–我已经关闭了 Trackback 的 Ping.
现在比较烦的另一个问题是经常有人在我的站点上找一些”dvbbs7.mdb”,”s8qq.txt”,”s8dvbbs6.mdb” 或者类似的文件,估计是用一些”黑客”工具在扫描有漏洞的论坛程序,我通过 URL rewrite 制定了几个规则。谁有其他什么好办法么?
EOF