没有一个网站的性能像 Twitter 这样这么令人牵肠挂肚,看见那条大鲸鱼总是让人感觉很无奈。Twitter 的运维专家 John Adams 在 Velocity 2009 上做了一篇题为 Fixing Twitter 的技术分享(PDF),人家也是一直在努力阿。John Adams 在 2008 年七月加入的 Twitter,对于 Twitter 的站点稳定的确做了不少工作。
Twitter 运维团队的职责:
软件性能 (后端) Software Performance (back-end)
可用性 Availability
容量规划 Capacity Planning (metrics-driven)
配置管理 Configuration Management
看完这个接近 50 页的 PDF,除了满足我们一小部分技术窥探的癖好,或许也可以学到点什么。
不重复发明轮子
对于监控,Twitter 用的就是 RRDtool,Ganglia、MRTG 这些已经成为很多网站标准配备的组件。而不是自己写一大堆功能重复的东西。值得注意的是,Twitter 也一直在用 Google Analytics 进行业务分析。
不重复发明轮子,可以打磨轮子,比进行如一些功能脚本定制之类的工作。
发明不重复的轮子
Twitter 开源了他们自己用的一个 Apache 模块 mod_memcache_block(a distributed IP blocking system),这个模块根据 HTTP 代码请求限制访问频率。熟悉 Twitter 的朋友会知道这是针对第三方应用程序的必须的一个功能,否则的话,会产生类似 DDos 的效果 :) John Adams 说这个模块是他多年以来就期待的东西,我相信,如果有人已经做了同样的事情,他们肯定不会自己再写一个。
尽可能的自动化
无论是配置管理还是针对各项功能的 ” 开关 ”,都尽可能的自动化。依赖于人来控制一些事情容易 ” 规范 ”,但是流程冗杂,节奏变慢。
更好的理解硬件
拥抱新技术体系,使用更有经济效益的硬件 (比如对 8 核 CPU 的选型与更换) 会带来更好的收益。而这个要建立在对硬件体系的正确理解上才行。
另外几句话要记住:
Disk is the new Tape. (内存是新类型的磁盘. 磁盘是新类型的磁带)
Kill long running queries before they kill you. (问题是如何提前发现? 有效的监控!)
Use metrics to make decisions, not guesses.
“Cache Everything!” not the best policy
或许还应该学到更多 …