首页 > Web开发 > 详细

Apache的工作模式

时间:2020-08-16 19:58:07      阅读:94      评论:0      收藏:0      [点我收藏+]

Apache是目前世界排名第一的web服务器软件,跨平台和安全性高;支持SSL和多个虚拟主机;
它是以进程为基础的结构,不适合多处理器环境,所以,web站点扩容通常是增加服务器而不是增加处理器。

Apache有三种稳定的工作模式,称为多进程处理模块MPM

1.Prefork工作模式

apache在启动之初,就预先派生一些子进程,然后等待请求过来;每个子进程只有一个线程,在一个时间点内,只能处理一个请求。

优点:成熟稳定,兼容所有模块,线程安全性高
缺点:不适合处理高并发请求;一个进程相对占用更多的系统资源,消耗更多的内存
技术分享图片

2.Worker工作模式
使用多进程和多线程的混合模式,也预先派生了几个子进程(数量远少于prefork派生的);每个子进程创建多个线程,包括一个监听线程;每个请求会被分配一个线程来服务

优点:占据更少的内存(多个线程通常会共享父进程的内存),适合高并发的场景
缺点:必须考虑线程安全的问题,使用keep-alive长连接的时候,某个线程会被一直占用,即使没有收到请求,需要等待到超时才会释放;一个线程出现问题也会导致同一进程下的线程出现问题

keep-alive
在http早期,每个http请求都要求打开一个tcp socket连接,并且使用之后就断开这个tcp连接;
设置keepalive_timeout之后,httpd守护进程便会等待浏览器还有没有请求,这个等待就是keepalive_timeout时间;如果在规定的等待时间内没有收到浏览器发来的http请求,则关闭这个http连接;
优点:减少tcp连接的建立次数;减少time_wait状态连接;提高性能和提高httpd服务器的吞吐率
缺点:长时间的tcp连接容易导致系统资源无效占用;配置不当的keep-alive,比重复利用连接带来的损失大

技术分享图片
3.Event工作模式
类似于worker的工作模式,最大区别是它解决了keep-alive场景下,长期被占用的线程的资源的浪费问题;event模式下,会有一个专门的线程来管理这些keep-alive类型的线程,当有真实的请求过来的时候,将请求传递给服务线程,执行完毕又允许它释放

优点:增强了高并发场景下的请求处理能力,减少tcp的连接数量
缺点:Event PMP不能在https访问下工作
技术分享图片

查看apache工作模式的方法:
httpd -V |grep -i "Server MPM"
技术分享图片
指定的方式:
在编译时使用 --with-mpm=xxx

Apache的工作模式

原文:https://www.cnblogs.com/ccku/p/13512068.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!