apache和httpd的关系:
apache刚开始靠apache这个软件起家,后来发展成为一个基金会,拥有了几十种开源项目,所以就把提供web服务的apache这个软件更名为httpd(apache2以上版本改称为httpd)
apache是基于多进程的io模型实现的。并发性有极限(10k)
apache的三种工作模式:MPM 工作模式
-
prefork MPM
-
worker MPM
-
event MPM
prefork MPM: 多进程I/O模型,每个进程响应一个请求,CentOS 7 httpd默认模型
一个主进程创建若干个子进程,每个子进程的一个线程用来处理用户请求。
-
优点:稳定
-
缺点:慢,占用资源,不适用于高并发场景
worker MPM:复用的多进程I/O模型,多进程多线程,IIS使用此模型
一个主进程创建若干个子进程,每个子进程又有若干个线程,每个线程处理一个用户的请求。请求执行完成后线程不自动释放,会一直等到超时才会释放。
event MPM:事件驱动模型(worker模型的变种),CentOS8 默认模型
一个主进程创建若干个子进程,每个子进程包含一个监听线程和若干个工作线程。每个工作线程响应一个请求。请求执行完成后,释放线程。
worker和event:
-
优点:占用资源少,能实现高并发
-
缺点:一个子进程开多个线程,因为线程之间存在资源竞争(同一进程的多个线程是共享资源的),如果挂了一个线程,可能会影响到其他的线程。所以稳定性较差。