Apache工作模式

Apache工作模式

Apache HTTP 服务器被设计为一个功能强大,并且灵活的 web 服务器, 可以在很多平台与环境中工作。不同平台和不同的环境往往需要不同 的特性,或可能以不同的方式实现相同的特性最有效率。Apache httpd 通过模块化的设计来适应各种环境。这种设计允许网站管理员通过在 编译时或运行时,选择哪些模块将会加载在服务器中,来选择服务器特性。

Apache HTTP 服务器 2.0 扩展此模块化设计到最基本的 web 服务器功能。 它提供了可以选择的多处理模块(MPM),用来绑定到网络端口上,接受请求, 以及调度子进程处理请求。

扩展到这一级别的服务器模块化设计,带来两个重要的好处:

Apache httpd 能更优雅,更高效率的支持不同的平台。尤其是 Apache httpd 的 Windows 版本现在更有效率了,因为 mpm_winnt 能使用原生网络特性取代在 Apache httpd 1.3 中使用的 POSIX 层。它也可以扩展到其它平台 来使用专用的 MPM。 Apache httpd 能更好的为有特殊要求的站点定制。例如,要求 更高伸缩性的站点可以选择使用线程的 MPM,即 worker 或 event; 需要可靠性或者与旧软件兼容的站点可以使用 prefork。 在用户看来,MPM 很像其它 Apache httpd 模块。主要是区别是,在任何时间, 必须有一个,而且只有一个 MPM 加载到服务器中。可用的 MPM 列表位于 模块索引页面。

1.prefork模式

通过预先启动一些进程,等待请求进来。可以减少频繁创建和销毁进程的开销。每个子进程只有一个线程,在一个时间点内,只能处理一个请求。

启动参数:

  • MaxSpareServers

  • StartServers

  • MinSpareThreads

特性:成熟稳定,不需要担心线程安全的问题,但占内存资源较多,不擅长处理高并发


2.worker模式

多进程和多线程的混合模式。预先fork几个子进程(数量较少),然后每个子进程包含固定的线程,通过线程来独立处理请求。

特性:占用资源少,工作效率高,高并发下表现优秀,但是不太稳定

3.event模式

与worker模式基本一致, 在Linux中结合使用 Epoll+TCP 延迟触发事件的方式来提高服务器的高并发连接下的性能. Event模式是在原有的Worker模式基础上改进,它解决了keep-alive场景下,长期被占用的线程的资源浪费问题。

注意:

  • event模式不能很好的支持https的访问(HTTP认证相关的问题)

  • event MPM在遇到某些不兼容的模块时,会失效,将会回退到worker模式

  • event MPM需要Linux系统(Linux 2.6+)对EPoll的支持,才能启用

worker、event模式下推荐使用fastCGI和php-fpm。 Apache通过Mod_PHP模块与PHP通信。Nginx使用9001端口或监听Socket方式与PHP通信。

参考:

anzhihe 安志合个人博客,版权所有 丨 如未注明,均为原创 丨 转载请注明转自:https://chegva.com/2100.html | ☆★★每天进步一点点,加油!★★☆ | 

您可能还感兴趣的文章!

发表评论

电子邮件地址不会被公开。 必填项已用*标注