编辑: 向日葵8AS 2016-06-22

worker进程和CPU亲缘性 ? 好处 C 利用多核 C 防止CPU的cache失效 ? 问题 C 丌同的硬件,CPU核数可能丌同 C 绑定多核的CPU亲缘性比较繁琐 Tengine对于进程设置的简化 ? 使用对比 # standard nginx worker_processes 8;

worker_cpu_affinity

00000001 00000010

00000100 00001000

00010000 00100000

01000000 10000000 # tengine #worker_processes auto;

#worker_cpu_affinity auto;

user_agent模块 ? 功能将浏览器、爬虫匹配成变量 ? 实现 C Trie树匹配,O(n)复杂度 C Nginx的browser模块同user_agent模块相比 ? 算法复杂度O(n ^ 3) ? 丌灵活 ? 配置例子 C https://www.github.com/taobao/tengine/bl ob/master/conf/browsers 对Nginx的limit_req增强 ? 白名单支持 ? 指定跳转页面支持 ? 同一个location下多limit_req支持 location / { limit_req zone=one burst=5;

limit_req zone=two forbid_action=@test1;

limit_req zone=three burst=3 forbid_action=@test2;

} location /off { limit_req off;

} location @test1 { rewrite ^ /test1.html;

} location @test2 { rewrite ^ /test2.html;

} 主劢健康检查 ? 发现后端服务器失效的响应快 ? L7检查使上线下线很方便 ? 后端server的状态监控页面 ? 可检查多种后端服务器 C HTTP/HTTPS C AJP C MySQL C … 输入体过滤器(input body filter) ? 目的是做安全过滤如 C 防hashdos攻击 C 防SQL注入 C 防XSS ? 标准Nginx无输入体过滤器的问题 C 如果所有POST内容都在内存中 ? 占用内存过大 C 否则否则性能丌高 ? 内容可能被buffer到磁盘 ? 例子(防hashdos攻击) C http://blog.zhuzhaoyuan.com/2012/01/a- mechanism-to-help-write-web-application-firewalls- for-nginx/ 职能进程机制(proc) ? 为了实现一些特殊用途的进程(非HTTP) ? 可以实现单体进程的效果 Tengine中命令行参数的增加 ? 列出已经编译的模块 C nginx -m ? 列出支持的指令 C nginx -l ? 输出配置文件的全部内容 C nginx -d C 支持include的内容 Nginx监控增强 ? 可集成到统计工具如Cacti中?Tengine增加相应时间统计 实时监控工具Tsar ? tsar --nginx 其他 ? Slice模块 ? error_page可恢复默认 ? Server头可自定义 ? expires_by_types ? SSL的key加密(dialog) ? request_time_cache ? 崩溃打印堆栈 ? 更多内容请参考: http://tengine.taobao.org/changelog_c n.html

4、Web应用开发 主要思想 ? 引进劢态脚本语言Lua C Lua语言很强大且简单 C 适合嵌入 C 支持协程(coroutine) C ngx_lua ? 非阻塞的处理数据库层调用 C ngx_drizzle ? 价值 C 用同步的语义来实现异步的调用 ngx_lua ? Proactor模型 C 业务逻辑以自然逻辑书写 C 自劢获得高并发能力 C 丌会因I/O阻塞等待而浪费CPU资源 ? 每Nginx工作进程使用一个Lua VM ? 工作进程内所有协程共享VM ? 将Nginx I/O原语封装后注入Lua VM,允许Lua代码直接访问 ? 每个外部请求都由一个Lua协程处理,协程Y间数据隔离 ? Lua代码调用I/O操作接口时,若该操作无法立刻完成,则打断 相关协程的运行并保护上下文数据 ? I/O操作完成时还原相关协程上下文数据并继续运行 代码示例 location /http_client { proxy_pass $arg_url;

} location /web_iconv { content_by_lua ' local from, to, url = ngx.var.arg_f, ngx.var.arg_t, ngx.var.arg_u local iconv = require "iconv" local cd = iconv.new(to or "utf8", from or "gbk") local res = ngx.location.capture("/http_client?url=" .. url) if res.status ==

200 then local ostr, err = cd:iconv(res.body) ngx.print(ostr) else ngx.say("error occured: rc=" .. res.status) end ';

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题