一、进程&&线程
1.进程模型
(1) 单进程模型:一个进程响应多个请求
容易造成请求的阻塞
(2) 多线程模型:每个进程响应一个请求
进程量大,进切换次数过多
每个进程地址空间独立,很多空间是重复的数据,所以内存使用率低
2.线程模型(thread)
LWP:light Weight Process
在Linux上称为轻量级进程;是进程内部的自运行单位,在Linux上表现形式和进程一样,占用一个端口,但管理方式不同
多核CPU使用下,线程的优势才能发挥,并行执行线程,更好的分配系统资源,减少切换次数,但需要多线程编程
线程切换过快会造成线程抖动
(1) 单进程多线程模型
每个线程响应一个请求,线程间依然切换,但是切换轻量级
同一进程管理下的线程可以共享进程的诸多资源,例如多个用户对同一文件的访问
对内存的需求较之进程模型降低
(2) 多进程多线程模型
多个进程,分批管理线程;例如每个进程管理1000个线程,这样在每个进程内部的线程资源争用不会太严重
多核心CPU的情况下,可以做CPU亲和性绑定(进程绑定),每个进程内线程切换
(3) 多线程
N个请求,一个线程响应多个请求
二、I/O模型
1.IO动作执行
进程无法直接操作IO设备,必须通过系统调用请求内核来协助,内核会为你每个IO设备维护提供有一个buffer
对于输入而言其等待时间:wait + copy
2.I/O类型
(1)同步和异步:synchronous, asyncrhonous
关注的是消息通知机制
1)同步:调用发出不会立即返回,但一旦返回就可以返回最终结果;
2)异步:调用发出之后,被调用方立即返回消息,但返回的非最终结果;被调用者通过状态、通知机制来通知调者,或通过回调函数来处理结果;
(2)阻塞和非阻塞:block, nonblock
关注的是调用者等待被调用者返回调用结果时的状态
1)阻塞:调用结果返回之前,调用者(调用线程)会被挂起;调用者只有在得到结果之后才会返回;
2)非阻塞:调用结果返回之前,调用不会阻塞当前线程;
3.I/O模型
blocking IO:阻塞式IO
nonblocking IO:非阻塞式IO
IO multiplexing:复用型IO
signal driven IO:事件驱动型IO
asyncrhonous IO:异步IO(不导致进程阻塞)
三、Apache httpd多路模块
httpd是一个重量级别web服务器,支持的功能模块多
1.prefork:多进程模型
一个进程响应一个请求;内核select()调用算法最多并行处理1024个请求
主进程,生成多个子进程,每个子进程处理一个请求
2.worker:多进程多线程模型
一个线程响应一个请求;内核调用select()模型
主进程,生成多个子进程,每个子进程生成多个线程,每个线程响应一个请求
只能看到主控进程和对应进程,每个进程速欧开启的线程是基于线程库研发,每个线程响应一个用户请求,线程无法用ps显示,生成子进程处理,并发响应能力差,但是很稳定,进程间的影响小
3.event:事件驱动模型
状态转换通知,一个进程响应n个请求;内核调用epoll()
主进程,生成多个子进程,每个子进程响应多个请求
单进程多请求,并发响应强,占用资源少
触发机制:水平触发(多次通知)、边缘触发(仅一次通知机制)
四、Apache httpd和Nginx对比
1.Nginx
轻量级web服务器,其相对于apache占用更少的内存及资源
nginx 处理请求是异步非阻塞的,而,在高并发下nginx 能保持低资源低消耗高性能
高度静态模块化的设计,在1.9版本之前不能够动态加载模块
epoll and kqueue 作为开发模型
支持热部署,平滑升级
2.Apache httpd
重量级web服务器,支持众多模块
httpd处理请求是阻塞型
bug相对于nginx少,稳定轻强
注意:
1) epoll(freebsd是kqueue)网络IO模型是nginx处理大量静态服务时才能提供高web性能
nginx使用资源少,支持并发连接数量众多。能够支持高达 50,000 个并发连接数的响应
2) apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程
3) nginx的负载能力比apache高很多
4) nginx处理静态文件好,耗费内存少,但是处理动态请求不行,一般动态请求要apache去做,nginx只适合静态和反向
5) 在静态文件处理、PHP-CGI的支持、反向代理功能、前端Cache、维持连接等方面nginx优于apcche httpd,但是在Apache+PHP(prefork)模式下,如果PHP处理慢或者前端压力很大的情况下,很容易出现Apache进程数飙升,从而拒绝服务的现象。
本文出自 “许鼎的博客” 博客,请务必保留此出处http://xuding.blog.51cto.com/4890434/1770989
原文地址:http://xuding.blog.51cto.com/4890434/1770989