标签:操作 时间 socket 复用 断开连接 apache thread net width
http 协议特点
HTTP协议工作位置
在tcp/ip协议栈中的位置
http协议通常承载与TCP协议之上,工作在应用层
pv :page view 一次页面的访问
uv:User View 一个用户(IP)点开页面算一个(表现一个网站活跃度)针对队里IP
active connetion:活动链接数
qps :每秒的请求数
2E pv; active connetion 100w;qps 1-2w
MPM多道处理模块
Prefork :实现了一个非线程型的。预派生的web服务器
主进程,生成多个子进程,每个子进程处理一个请求
Worker:主进程,生成多个子进程,每个子进程生成多个线程,每个线程响应一个请求
复用I/O
event : 主进程,生成多个子进程,每个子进程响应多个请求
它把服务进程从连接中分离出来,在开启keepalive场合下相对worker模式能够承受的了更高的并发负载
事件驱动式I/O
同步:调用发出之后不会立即返回,但一旦返回,则返回即是最终结果
异步:调用发出之后,别调用方立即返回消息,但返回的并非最终结果;被调用者通过状态、通知机制等来通知调用者,或通过回调函数来处理结果
关注点---是消息通知机制
阻塞 :调用结果返回之前,调用者会被挂起;调用者只有在得到返回结果之后才能继续;
非租塞:调用者在结果返回之前,不会被挂起,即调用不会阻塞调用者
关注点---调用者等待被调用者返回调用结果时的状态
阻塞blocking IO
非租塞nonblocking IO
多路IO multiplexing
异步 asynchronous IO
事件驱动 signal driven IO
基于TCP客户/服务器程序的套接字函数
IO发生时涉及的对象和步骤。对一个network IO ,它会涉及到两个系统对象,一个是调用这个IO的process(or thread),另一个就是系统内核。
当一个read 操作发生时,它会经历两个阶段:
当用户进程调用recvfrom这个系统调用,kernel就开始了IO的第一个阶段:准备数据。
对于network IO来说,很多时候数据在一开始还没有到达(比如,还没有收到一个完整的UDP包),这个时候kernel就要等待足够的数据到来。
而在用户进程这边整个进程会被阻塞。当kernel一直等到数据准备好了,它就会将数据从kernel中拷贝到用户内存,然后kernel返回结果,用户进程才解除block的状态,重新运行起来。
实际上,除非特别指定,几乎所有的IO接口(包括socket接口)都是阻塞型的
阻塞:特点就是在IO执行的两个阶段(等待数据和拷贝数据两个阶段)都会被block
select和epoll模型(Apache和Nginx)
select同步阻塞
Epoll异步模型
同步IO:用户进程发出IO调用,去获取IO设备数据,双方的数据要经过内核缓冲区同步,完全准备好后,再复制返回到用户进程。而复制返回到用户进程会导致请求进程阻塞,直到I/O操作完成。
同步IO:导致请求进程阻塞,直到I/O操作完成。
异步IO:不导致请求进程阻塞。
异步IO:用户进程发出IO调用,去获取IO设备数据,并不需要同步,内核直接复制到进程,整个过程不导致请求进程阻塞。
所以, 阻塞IO模型、非阻塞IO模型、IO复用模型、信号驱动的IO模型者为同步IO模型,只有异步IO模型是异步IO。
IO模型的具体实现方式对比
1.几种模式实现方式
2.select,poll,epoll区别
apache是同步阻塞模式,select实现方式
nginx是异步非阻塞工作模式,epoll实现方式
IO复用:http://note.youdao.com/noteshare?id=002ebbbcadabb6f33cb1115aab7a7f6f&sub=BB926F20646E4E8088150B6C13FDE4B9
https://www.cnblogs.com/f-ck-need-u/p/7624733.html
https://blog.51cto.com/anfishr/2308885
标签:操作 时间 socket 复用 断开连接 apache thread net width
原文地址:https://www.cnblogs.com/liuzhiyun/p/12006458.html