代码改变世界

淘宝的Tengine都改了什么

2012-02-13 15:41 by Sun Yongyue, ... 阅读, ... 评论, 收藏, 编辑

Tegine logoTengine是由淘宝Servers Platform Team基于Nginx修改的一个服务器,中午趁着大家都在睡觉,粗粗地拿了代码看下都修改了哪些东西。个人认为里边比较有用的修改是input filter和sysguard,由于只是粗看,没有留意细节,可能有错漏。以下是分代码目录的修改记录笔记:

 
0. others
1) 配置默认值的修改ON->OFF之类的
2) bug/logic相关的修改,还细看就不细说了。
 
1. core
1) 增加configure的dump
2) 增加一此log方式或方法
3) 增加内存池管理realloc
4) 增加字符串处理ngx_atoll,修改unescape_uri以支持www的form
5) 增加log的另一种时间格式
 
2. event
1) 增加统计信息request_time
2) 修改/增加ssl加密方式
 
3. http
1) 增加input filter
2) 增加server tag用于response中Server这个header的设置,还有admin/info等用于修改一些页面信息-_-
 
4. http/module
1) 增加ngx_http_concat_module模块,用于多个静态文件的合并返回
2) 增加ngx_http_footer_filter_module模块,用于在末尾插入一段东西
3) 修改ngx_http_headers_filter_module模块,按type设置expire time
4) 修改ngx_http_limit_req_module模块,增加白名单,规则似乎也有修改
5) 修改ngx_http_stub_status_module模块,记录request time
6) 增加ngx_http_sysguard_module模块,用于在cpu/mem资源不足时,报警并执行action(可认为主动拒绝服务)
 
5. misc
1) 增加ngx_backtrace_module打印堆栈信息,便于与signal相关(SIGXXX)出错时的问题定位。
 
6. os
1) 增加realloc
2) 增加了pipe
3) 增加ngx_syslog_module,用于向syslog日志服务器写日志
4) 增加了cpu/mem的信息获取方法
 
7. mail
没管
 

2012-02-14 UPDATE:
关于ngx_syslog,因为我们也有类似的需求(但不是针对syslog服务),自己此前想过这个功能的实现,看了下Tengine发现与我要求的还有不同:该功能是同步阻塞的,发送出错也是直接失败,这些应该可以改进,比如异步,非阻塞,出错时区分中断、阻塞或其他错误等。