同步synchronous 和 异步asynchronous 是站在被调用者角度:
同步synchronous:进程发起一个调用,在没有获得结果之前,被调用者是不回返回的.
异步asynchronous: 进程发起一个调用,即使不能立即获得结果,被调用也会返回,返回一个未完成的状态,当完成的时候,内核通知进程.
阻塞 和 非阻塞 是站在调用者的角度:
阻塞 进程发起一个调用,被调用者 同步执行,进程进入阻塞的状态.
非阻塞 进程发起一个调用,被调用者 异步执行,进程进入非阻塞的状态.
磁盘的I/O模型:
1 同步阻塞模型
2 异步非阻塞模型
进程读取数据的过程:
MPM多路处理模块: multipath process module
1 prefork 多路处理模块 一个进程响应一个请求,每一个进程的I/O模型是同步阻塞, 该模型稳定性好.
2 worker 多路处理模块 一个进程创建多个线程来响应多个用户的请求,每个线程的I/O模型是同步阻塞,因此每一个线程只能响应一个请求,该模型中的每一个线程可以共享进程的内存中的资源,但是稳定性没有prefork好.
3 event 多路处理模块 一个进程创建多个线程来响应多个用户的请求,每个线程的I/O模型是异步非阻塞,因此每一个线程可以响应多个请求,该模型中每一个线程可以共享进程的内存中资源,但是翁定性不如prefork 好.
配置:(httpd-2.4版本)
<IfModule mpm_prefork_module>
StartServers 表示启动进程的时候启动的工作进程的数目
MinSpaceServers 表示最小空间进程的数目
MaxSpaceServers 表示最大空间进程的数目
MaxRequestWorkers 表示并发量的大小
MaxRequestsPerChild 表示每个进程最大的服务次数 超过之后就销毁 0表示永久有效
</IfModule>
<IfModule mpm_worker_module>
StartServers 表示启动进程的时候启动的工作进程的数目
MinSpaceThreads 表示最小空闲线程的数目
MaxSpaceThreads 表示最大空闲线程的数目
ThreadsPerChild 每一个进程能够创建的线程的数目
MaxRequestWorkers 并发量
MaxRequestsPerChild 同上
</IfModule>
<IfModule mpm_event_module>
StartServers 表示启动进程的时候启动的工作进程的数目
MinSpaceThreads 表示最小空闲线程的数目
MaxSpaceThreads 表示最大空闲线程的数目
ThreadsPerChild 每一个进程能够创建的线程的数目
MaxRequestWorkers 并发量
MaxRequestsPerChild 同上
</IfModule>
同步synchronous:进程发起一个调用,在没有获得结果之前,被调用者是不回返回的.
异步asynchronous: 进程发起一个调用,即使不能立即获得结果,被调用也会返回,返回一个未完成的状态,当完成的时候,内核通知进程.
阻塞 和 非阻塞 是站在调用者的角度:
阻塞 进程发起一个调用,被调用者 同步执行,进程进入阻塞的状态.
非阻塞 进程发起一个调用,被调用者 异步执行,进程进入非阻塞的状态.
磁盘的I/O模型:
1 同步阻塞模型
2 异步非阻塞模型
进程读取数据的过程:
MPM多路处理模块: multipath process module
1 prefork 多路处理模块 一个进程响应一个请求,每一个进程的I/O模型是同步阻塞, 该模型稳定性好.
2 worker 多路处理模块 一个进程创建多个线程来响应多个用户的请求,每个线程的I/O模型是同步阻塞,因此每一个线程只能响应一个请求,该模型中的每一个线程可以共享进程的内存中的资源,但是稳定性没有prefork好.
3 event 多路处理模块 一个进程创建多个线程来响应多个用户的请求,每个线程的I/O模型是异步非阻塞,因此每一个线程可以响应多个请求,该模型中每一个线程可以共享进程的内存中资源,但是翁定性不如prefork 好.
配置:(httpd-2.4版本)
<IfModule mpm_prefork_module>
StartServers 表示启动进程的时候启动的工作进程的数目
MinSpaceServers 表示最小空间进程的数目
MaxSpaceServers 表示最大空间进程的数目
MaxRequestWorkers 表示并发量的大小
MaxRequestsPerChild 表示每个进程最大的服务次数 超过之后就销毁 0表示永久有效
</IfModule>
<IfModule mpm_worker_module>
StartServers 表示启动进程的时候启动的工作进程的数目
MinSpaceThreads 表示最小空闲线程的数目
MaxSpaceThreads 表示最大空闲线程的数目
ThreadsPerChild 每一个进程能够创建的线程的数目
MaxRequestWorkers 并发量
MaxRequestsPerChild 同上
</IfModule>
<IfModule mpm_event_module>
StartServers 表示启动进程的时候启动的工作进程的数目
MinSpaceThreads 表示最小空闲线程的数目
MaxSpaceThreads 表示最大空闲线程的数目
ThreadsPerChild 每一个进程能够创建的线程的数目
MaxRequestWorkers 并发量
MaxRequestsPerChild 同上
</IfModule>