I/O模型:
阻塞I/O:bkocking,指io操作需要彻底完成后才返回到用户空间,调用结果返回之前,调用者被挂起
非阻塞I/O模型:nonblocking,指io操作被调用后立即返回给用户一个状态值,无需等到io操作彻底完成,最终的调用结果返回之前,调用者不会被挂起
异步I/O模型: asynchronous,被调用者通过状态,通知或回调机制主动通知调用者或被调用者的运行状态
异步I/O模型: 当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态,通知和回调通知调用者输入输出操作。
同步I/O引起进程阻塞,直到I/O操作完成
异步I/O不会引起进程阻塞
I/O复用先通过select调用阻塞
epoll:利用内存加速与内核空间的消息传递
web服务相关功能
虚拟主机
支持keep-alive和管道连接
访问日志(支持基于日志缓冲提高其性能)
url rewirte
路径别名
基于ip及用户的访问控制
支持速率限制及并发数限制
重新配置和在线升级而无须中断客户的工作进程
Memcached的GET接口
nginx模块:
核心模块:core module
标准模块:http模块,mail模块,stream模块
nginx功能:
静态的web资源服务器
结合FastCGI/uWSGI/SCGI等协议反向代理动态资源请求
http/https协议的反向代理
imap4/pop3协议的反向代理
tcp/udp协议的请求转发(LVS功能!)
nginx目录结构和命令:
ls /usr/local/nginx/
html是测试页,sbin是主程序
ls /usr/local/nginx/sbin/
nginx只是一个程序文件
ls /usr/local/nginx/html/
50x.html index.html测试网页
Nginx:默认为启动nginx
-h 查看帮助选项
-V查看版本和配置选项
-t 测试nginx语法错误
-c filenma指定配置文件(default: /etc/nginx/nainx.conf)
-s signal发送信号给master进程,signal:stop,quit,reopen,reload
-g directives在命令行中指明全局指令
nginx配置:
配置文件的组成部分:
主配置文件:nginx.conf
子配置文件:include conf.d/*.conf
fastcgi,uwsgi,scgi等协议相关的配置文件
mime.types:支持的mime类型
主配置文件的配置指令:
directve value [value2…];
指令必须以分号结尾
支持配置变量
1.内建变量:又nginx模块引入,可直接引用
2.自定义变量:由用户使用set命令定义
set variable_name value;
3.引用变量:¥variable_name
nginx配置文件:
主配置文件结构:四部
-
main block:主配置段,全局配置段,怼http。mail都有效
event{
…
}事件驱动相关的配置 -
http{
…
…各server的公共配置
server{每个server用于定义一个虚拟主机
…
}
server{
…
server_name 虚拟主机名
root 主目录
alias 路径别名
location [OPERATOR] URL {指定URL特性
…
if CONDITION {
…
}
}
}
}
}http/http协议相关配置段 -
mail{
…
}mail协议相关配置段
4 stream {
…
}stream服务器相关配置段
帮助文档:http://nginx.org/en/docs.ngx_core_modeule.html
user
Syntax: user user[group]
Default: user nobody nobody;
Context: main
指定worker进程的运行身份,如组不指定,默认和用户名同名
pid /PATH/TO/PID_FILE
指定存储nginx主进程PID的文件路径
includ file | mask
指明包含进来的其他配置文件片断
load_module file
模块加载配置文件: /user/share/naing/modules/*.cong
指明要装载的动态模块路径:/usr/lib64/nginx/modules
性能优化相关的:
1.worker_processes number | auto
worker进程的数量; 通常应该为当前主机的cpu的物理核心数
2.worker_cpu_affinty cpumask…
worker_cpu_affinty auto [cpumask] 提供缓存命令率
CPU MASK :00000001 : 0号CPU
00000010 : 1号CPU
10000000 : 8号CPU
worker_cpu_affinity 0001 0010 0100 1000;
worker_cpu_affinity 0101 1010;
3.worker_priority number
指定worker进程的nice值,设定worker进程优先级:[-20,20]
4.worker_rlimit_nofile number
worker进程所能够打开的文件数量上限
事件驱动相关的配置:
events{
…
}
1,worker_connections number
每个worker进程所能够打开的最大并发连接数数量,
总最大并发数:worker_processes*worker_connections
2.use method
指明并发连接请求的出来方法,默认自动选择最优方法
3.accept_mutex on | off 互斥
出来新的连接请求的方法; on指由各个worker轮流处理新请求,off指美国新请求的到达都会通知所以的worker进程,但只有一个进程可获得连接,造成“惊群”,影响性能
调试与定位:
1.daemon on | off
是否以守护进程方式运行nginx,默认为守护进程反式
2.master_process on|off
是否以master/worker模型运行nginx;默认为on
off将不启动worker
3.error_log file [level]
错误日志文件及级别;出于调试需要,可设定为dubug;但debug仅在编译时使用“–with-debug”选项才有效
方式:file /path/logfile;
stderr:发送到标准错误
syslog:server-adderss[,parmeter=values]:发送到syslog memory:size 内存
level:debug|info|notice|warn|error|crit|alter|emerg