Tengine原理,


Point 1:什么是Tengine?
Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。它的目的是打造一个高效、安全的Web平台。

Point 2:Nginx 特性
模块化设计,较好的扩展性
高可靠性:master/worker
支持热部署:不停机更新配置文件、更换日志文件、更新服务器版本
低内存消耗:10000个keep-alive连接模式下的非活动连接仅消耗2.5M内存
event-driven,aio,mmap
DOS机制在 2016-04-26 nginx-1.10.0 版本中才支持

Point 3:Tengine特性
继承Nginx-1.6.2的所有特性,兼容Nginx的配置;
动态模块加载(DSO)支持。加入一个模块不再需要重新编译整个Tengine;
支持SO_REUSEPORT选项,建连性能提升为官方nginx的三倍;
同时支持HTTP v2协议和SPDY v3协议,可同时使用两种协议;
流式上传到HTTP后端服务器或FastCGI服务器,大量减少机器的I/O压力;
更加强大的负载均衡能力,包括一致性hash模块、会话保持模块,还可以对后端的服务器进行主动健康检查,根据服务器状态自动上线下线,以及动态解析upstream中出现的域名;
输入过滤器机制支持。通过使用这种机制Web应用防火墙的编写更为方便;
支持设置proxy、memcached、fastcgi、scgi、uwsgi在后端失败时的重试次数
动态脚本语言Lua支持。扩展功能非常高效简单;
支持管道(pipe)和syslog(本地和远端)形式的日志以及日志抽样;
支持按指定关键字(域名,url等)收集Tengine运行状态;
组合多个CSS、JavaScript文件的访问请求变成一个请求;
自动去除空白字符和注释从而减小页面的体积
自动根据CPU数目设置进程个数和绑定CPU亲缘性;
监控系统的负载和资源占用从而对系统进行保护;
显示对运维人员更友好的出错信息,便于定位出错机器;
更强大的防攻击(访问速度限制)模块;
更方便的命令行参数,如列出编译的模块列表、支持的指令等;
可以根据访问文件类型设置过期时间;

Point 4:Tengine和Appache的区别
1.nginx相对于apache的优点:

轻量级,同样起web 服务,比apache 占用更少的内存及资源 
抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能 
高度模块化的设计,编写模块相对简单 
社区活跃,各种高性能模块出品迅速啊 

2.apache 相对于nginx 的优点:

rewrite ,比nginx 的rewrite 强大 
模块超多,基本想到的都可以找到 
少bug ,nginx 的bug 相对较多 
超稳定 
存在就是理由,一般来说,需要性能的web 服务,用nginx 。如果不需要性能只求稳定,那就apache 吧。后者的各种功能模块实现得比前者,例如ssl 的模块就比前者好,可配置项多。这里要注意一点,epoll(freebsd 上是 kqueue )网络IO 模型是nginx 处理性能高的根本理由,但并不是所有的情况下都是epoll 大获全胜的,如果本身提供静态服务的就只有寥寥几个文件,apache 的select 模型或许比epoll 更高性能。当然,这只是根据网络IO 模型的原理作的一个假设,真正的应用还是需要实测了再说的。

Point 5:Tengine的核心模块
Main端配置

约定:
大部分模块使用方式,tengine与nginx相同,nginx模块使用可以参照nginx的官方站点,tengine。
Syntax: 表示功能或者选项,其后面有语法
Default:    默认值
Context:    可出现的上下文

必备常用配置
user 指定用于运行worker进程的用户和组

Syntax: user user [group];
Default:    user nobody nobody;
Context:    main

pid 指定nginx进程的pid文件路径

syntax: pid file;
Default:
pid nginx.pid;
Context:    main

worker_rlimit_nofile number 单个worker进程所能够打开的最大文件数

Syntax: worker_rlimit_nofile number;
Default: 
Context:    main

相关内容

    暂无相关文章