ApacheMPM

Apache http.conf 实例配置详解 ################################## ### General Settings ################################## ServerType standalone # apache软件安装的位置,主机目录 ServerRoot "/usr/local/apache" # 记录 httpd 父进程的进程号 PidFile "/var... 阅读详情

apacheMPM

就最新版本的Web服务器Apache(版本是Apache 2.4.10,发布于2014年7月21日)来说,一共有三种稳定的MPM(Multi-Processing Module,多进程处理模块)模式。它们分别是prefork,worker和event,它们同时也代表这Apache的演变和发展。
查看我们Apache的模式,可以使用httpd -V命令来查看:
Shell

# httpd -V  
Server version: Apache/2.4.10(Unix) 
Server built: Dec29201411:23:13 
Server'sModule Magic Number: 20120211:36 
Server loaded: APR1.5.1,APR-UTIL1.5.3 
Compiled using: APR1.5.1,APR-UTIL1.5.3
Architecture: 64-bit Server MPM: event  
threaded: yes(fixed thread count)  
forked: yes(variable process count)

编译的时候,可以通过configure的参数来指定:
Shell

--with-mpm=prefork|worker|event

也可以编译为三种都支持,通过修改配置来更换
Shell

--enable-mpms-shared=all

在httpd.conf中修改Apache的多处理模式MPM可以通过(modules文件夹下,会自动编译出三个MPM的so):
Shell

#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
 LoadModule mpm_worker_module modules/mod_mpm_worker.so
 #LoadModule mpm_event_module modules/mod_mpm_event.so

preforkMPM

prefork模式可以算是很古老但是非常稳定的Apache模式。Apache在启动之初,就预先fork一些子进程,然后等待请求进来。之所以这样做,是为了减少频繁创建和销毁进程的开销。每个子进程只有一个线程,在一个时间点内,只能处理一个请求。
优点:成熟稳定,兼容所有新老模块。同时,不需要担心线程安全的问题。(我们常用的mod_php,PHP的拓展不需要支持线程安全)
缺点:一个进程相对占用更多的系统资源,消耗更多的内存。而且,它并不擅长处理高并发请求,在这种场景下,它会将请求放进队列中,一直等到有可用进程,请求才会被处理。

Apache的httpd.conf中的配置方式:
Shell

<IfModule mpm_prefork_module>
  StartServers 5
  MinSpareServers 5
  MaxSpareServers 10
  MaxRequestWorkers 250
  MaxConnectionsPerChild 0
 </IfModule>

workerMPM

worker模式比起上一个,是使用了多进程和多线程的混合模式。它也预先fork了几个子进程(数量比较少),然后每个子进程创建一些线程,同时包括一个监听线程。每个请求过来,会被分配到1个线程来服务。线程比起进程会更轻量,因为线程通常会共享父进程的内存空间,因此,内存的占用会减少一些。在高并发的场景下,因为比起prefork有更多的可用线程,表现会更优秀一些。
有些人会觉得奇怪,那么这里为什么不完全使用多线程呢,还要引入多进程?
原因主要是需要考虑稳定性,如果一个线程异常挂了,会导致父进程连同其他正常的子线程都挂了(它们都是同一个进程下的)。为了防止这场异常场景出现,就不能全部使用线程,使用多个进程再加多线程,如果某个线程出现异常,受影响的只是Apache的一部分服务,而不是整个服务。
优点:占据更少的内存,高并发下表现更优秀。
缺点:必须考虑线程安全的问题,因为多个子线程是共享父进程的内存地址的。如果使用keep-alive的长连接方式,某个线程会一直被占据,也许中间几乎没有请求,需要一直等待到超时才会被释放。如果过多的线程,被这样占据,也会导致在高并发场景下的无服务线程可用。(该问题在prefork模式下,同样会发生)
注:keep-alive的长连接方式,是为了让下一次的socket通信复用之前创建的连接,从而,减少连接的创建和销毁的系统开销。保持连接,会让某个进程或者线程一直处于等待状态,即使没有数据过来。

Apache的httpd.conf中的配置方式:

;IfModule mpm_worker_module;
  StartServers 3
  MinSpareThreads 75
  MaxSpareThreads 250
  ThreadsPerChild 25
  MaxRequestWorkers 400
  MaxConnectionsPerChild 0
 ;/IfModule;

eventMPM

这个是Apache中最新的模式,在现在版本里的已经是稳定可用的模式。它和worker模式很像,最大的区别在于,它解决了keep-alive场景下,长期被占用的线程的资源浪费问题(某些线程因为被keep-alive,空挂在哪里等待,中间几乎没有请求过来,甚至等到超时)。event MPM中,会有一个专门的线程来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又允许它释放。这样增强了高并发场景下的请求处理能力。
event MPM在遇到某些不兼容的模块时,会失效,将会回退到worker模式,一个工作线程处理一个请求。官方自带的模块,全部是支持event MPM的。
注意一点,event MPM需要Linux系统(Linux 2.6+)对EPoll的支持,才能启用。
还有,需要补充的是HTTPS的连接(SSL),它的运行模式仍然是类似worker的方式,线程会被一直占用,知道连接关闭。部分比较老的资料里,说event MPM不支持SSL,那个说法是几年前的说法,现在已经支持了。

Apache的httpd.conf中的配置方式:
Shell

<IfModule mpm_event_module>
  StartServers 3
  MinSpareThreads 75
  MaxSpareThreads 250
  ThreadsPerChild 25
  MaxRequestWorkers 400
  MaxConnectionsPerChild 0
 </IfModule>

测试

三种模式下,我通过ab做了一下性能测试,在常规满负载的场景下,并未发现有大的差异。
测试语句:

./ab -k -c200 -n200000192.168.0.11/index.html
测试结果: 
prefork:9556QPS 
worker:11038QPS 
event:10224QPS

测试语句:

./ab -k -c200 -n200000192.168.0.11/index.php(echo"hello world";)
测试结果:
prefork:6094QPS 
worker:7411QPS 
event:7089QPS

就使用PHP而言,fastCGI和php-fpm是更推荐的使用模式。
现在的最新浏览器,在单个域名下的连接数变得越来越多(通常都是使用keep-alive),主流浏览器是2-6个(还有继续增长趋势,为了加快页面的并发下载速度)。高并发场景,会越来越成为Web系统的一种常态。Apache很成熟,同时也背负了比较重的历史代码和模块,因此,在Web系统比较方面,Nginx在不少场景下,表现比起Apache更为出色。

请关注我的订阅号

订阅号.png

Apache主配置文件httpd.conf详解及示例代码 在上述示例中,Options指定了可用的选项,Indexes表示允许目录浏览,FollowSymLinks表示允许通过符号链接访问文件。AllowOverride指定了允许使用.htaccess文件进行覆盖的选项,None表示禁止使用.htaccess文件。在上述示例中,配置了一个名为www.example.com的虚拟主机,网页文件存放在"/var/www/example"目录下。在上述示例中,如果访问一个目录而没有指定具体文件名,则会默认显示index.html或index.php文件。 阅读详情

相关推荐

Apache2配置文件(httpd.conf)详解与示例

本文将详细解释 httpd.conf 的各个部分,并提供一些示例代码来帮助您理解和配置您自己的服务器。这只是 httpd.conf 文件的一小部分内容和示例,您可以根据您的需求进行修改和扩展。在 httpd.conf 文件中,您可以定义多个虚拟主机(Virtual Hosts),每个虚拟主机可以配置不同的域名和网站。在 httpd.conf 文件的开头,您会找到一些全局配置指令,用于设置整个服务器的行为。这个指令用于设置服务器响应中的 “Server” 标头,以减少服务器信息的泄露。

YbeCoder的博客 1193

Apache的三种MPM模式比较:prefork,worker,event

就最新版本的Web服务器Apache(版本是Apache 2.4.10,发布于2014年7月21日)来说,一共有三种稳定的MPM(Multi-Processing Module,多进程处理模块)模式。它们分别是prefork,worker和event,它们同时也代表这Apache的演变和发展。查看我们Apache的模式,可以使用httpd -V命令来查看:1234567891...

weixin_34043301的博客 1931

STM32C8T6HAL库实战:MAX30102心率血氧检测与OLED多级菜单一体化方案

本文详细介绍了基于STM32C8T6和HAL库的MAX30102心率血氧检测与OLED多级菜单一体化方案。内容涵盖硬件连接、CubeMX工程配置、传感器驱动移植、数据滤波算法、OLED显示驱动以及高效的多级菜单系统设计,旨在提供一个稳定、实用且易于移植的嵌入式健康监测项目参考。

weixin_29256771的博客 396

httpd服务及配置文件详解

一、Httpd服务 httpd是一个开源软件,且一般用作web服务器来使用。目前最流行的web服务器软件叫做httpd,在早期的http server就叫做apache,到了http server 2.0以后就改名为httpd了。所以有时候听到apache服务器和httpd服务器其实都是指得是一个意思。 httpd生产的文件 httpd目前有多个版本,主流有两个版本分别为:2....

weixin_30629977的博客 4596

Unity抖音小游戏上架实战:从零到一,详解流程与避坑指南

本文详细介绍了Unity抖音小游戏上架的全流程,包括环境准备、SDK集成、开发者账号注册、软著申请、打包提交流程及常见问题解决方案。重点解析了抖音小游戏平台特有的配置细节和避坑技巧,帮助开发者高效完成游戏上架并优化用户体验。

weixin_33704234的博客 261

Transformers 中的 Softmax 可以并行加速么?

通过融合前两个计算步骤,降低执行Reduce_max和Reduce_sum等操作的通信开销。利用共享内存来存储临时数据,以减少对全局内存的访问成本。

stephen147的博客 1234

交叉编译php8.2.5和apache2.4.57

先编译apache,才能再编译php8,因为php8在编译的时候需要指定--with-apxs2=/home/zfadmin/httpdCompile/arm/bin/apxs的目录才行,注意要么把php8编译成线程安全的,要么编译出来一个单线程的apache。如果php8没有编译成线程安全的版本则需要--with-mpm=prefork --enable-mpms-shared=all。进入到/home/zfadmin/httpdCompile/httpd-2.4.57/server 目录。

qq_35529025的博客 549

操作系统知识点汇总(王道)

操作系统不论是就业还是升学都是核心的一门课程,对于大部分工科更是必修课程。本文章是对《王道操作系统》所有知识点的总结笔记,以供大家学习以及在备考期间复习使用。让我们一起把知识往脑子里旋好吗!!!......

S mile0804的博客 5万+

lamp(源码部署)

lamp(源码部署)

nmlg6665352的博客 179

天龙八部源码深度解析:从宠物系统到副本机制(C++游戏开发实战)

本文深度解析《天龙八部》源码架构,重点剖析宠物系统状态机实现与副本动态加载机制等核心模块。通过C++代码示例展示宠物AI状态迁移逻辑和副本场景管理技术,为现代游戏开发提供兼容性改造方案与设计启示。适合游戏开发者学习经典MMORPG的工程化实现路径。

weixin_29011239的博客 385

CesiumForUnreal实现鹰眼地图(MiniMap)效果

CesiumForUnreal实现鹰眼地图(MiniMap)效果

专注GIS开发 3951

apache mysql 连接数 winnt,Apache 里的 MPM 调优比较

MPM 是 Apache 2 引入的一个概念,就是结构模块化.把核心任务处理作为一个可插拔的模块,即多路处理模块(MPM),使其能针对不同的环境进行优化.在编译apache时必须选择也只能选择一个 MPM,对类 UNIX 系统,有几个不同的 MPM 可供选择,它们会影响到 apache 的速度和可伸缩性.那么有多少种MPM呢?大致有:prefork MPM、worker MPM、BeOS MPM、...

weixin_32192627的博客 211

【STM32实物】基于STM32的扫地机器人/小车控制系统设计

扫地机器人系统采用分层结构设计,主要包括底层硬件控制层、中间数据处理层和上层用户交互层。底层硬件控制层负责对各个硬件模块进行控制和数据采集,中间数据处理层负责对采集到的数据进行处理和解算,上层用户交互层负责与用户进行交互并显示系统状态信息。

嵌入式阿齐Archie 1万+

Apache 高并发之 MPM 调优比较详细

1、什么是MPM? Multi-Processing Module (MPM) implements a hybrid multi-process multi-threaded server。(多进程、多线程) 2、有多少种MPM? 大致有:prefork MPM、worker MPM、BeOS MPM、NetWare MPM、OS/2 MPM、WinNT MPM。    3、怎么知道...

三月的备忘录 1049

华为OD机试 - 直捣黄龙 - 广度优先搜索BFS(Python/JS/C/C++ 新系统 200分)

从样例 1 可知:5 / 2,2 -> 输出 2 9如果按“移动步数”计算应该是 8,但题目输出是 9,说明这里的“路径长度”统计的是 路径上经过的节点数量。最短路径条数:ways[end]路径长度:dist[end] + 1。

学Java,找哪吒 125

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Apache里的 MPM 调优比较详细

1、什么是MPM? Multi-Processing Module (MPM) implements a hybrid multi-process multi-threaded server。(多进程、多线程) 2、有多少种MPM? 大致有:prefork MPM、worker MPM、BeOS MPM、NetWare MPM、OS/2 MPM、WinNT MPM。    3、怎么

ystyaoshengting的专栏 6107

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

apache+mod_jk+tomcat(jboss) 架构连接池相关配置解读及原则

          在实际使用apache+mod_jk+tomcat(jboss) 架构的过程中,时常碰到对各处连接池数设置含义不清楚,设置错误,导致故障。本文集中讲述连接池相关内容: 一、apache 在 apache 2.0 中,引入了影响性能的最核心模块:MPM(multi‐processing‐modules), MPM包含多种工作模式,MPM={beos|worker|pre...

iteye_17060的博客 299

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

apache/php 性能大幅提升关键参数

最近要对公司的网站做测试,我主要使用LoadRunner和ApacheBench高低搭配进行测试。LoadRunner主要用来压力测试,可以模拟用户行为,实时监测,有均值,曲线图,结果比较直观。ApacheBench也不差,比较简单,可以用来测试性能。本文侧重测试Apache/php性能,所以以ApacheBench说明。 测试过程发现一个问题,百思不得其解。 使用ApacheBench测试一...

白雾霾 286

Claude Code 与 Codex 双 AI 编程助手交叉验证:用 Jev 裁判机制提升代码质量

在 AI 编程助手日益普及的今天,如何确保生成代码的可靠性成为关键挑战。多模型交叉验证是一种通过引入独立评审模型,对多个 AI 编程工具的输出进行对比和评估的技术方案,其原理在于利用不同模型的思维差异发现潜在问题,从而提升代码正确性和可维护性。该方案在跨文件重构、核心逻辑改动等场景中价值显著,能有效降低返工风险。通过 MCP 协议集成 Claude Code、Codex 与 Jev 裁判模型,开发者可以构建自动化评审工作流,将判断时间从十几分钟压缩到几分钟,实现更高效的 AI 辅助编程。

weixin_33937778的博客 384

关于web服务器访问速度慢的一些简单解决方法

首先要考虑下 访问的用户: [root@app opt2]# netstat -ant | grep $ip:80 tcp 0 0 :::80 :::* LISTEN tcp 0 0 ::ffff:192.168.100.101:80 ...

weixin_34235135的博客 1055

三种MPM介绍

三种MPM介绍   Apache2.X支持插入式并行处理模块称为多路处理模块MPM。在编译apache时必须选择也只能选择一个MPM对类UNIX系统有几个不同的MPM可供选择它们会影响到apache的速度和可伸缩性...

weixin_34237596的博客 431

Apache配置优化

1、取消目录浏览 默认配置下,如果目录默认首页不存在的话,apahce将会生成目录文件列表。但是这个是不安全的。 查找所有包含以下内容的配置块 将红色内容改成 –indexes,就是在前面加多一个负号 2、 日志切割,按日期生成日志文件 默认配置下,所有日志将存放于一个文件。一方面所有日志都在一个文件,不好分析管理,另一方面随着文件越来越大,也影响到apache性能。 错误日志...

ve12345的博客 92

Apache Prefork、Worker和Event三种MPM分析

    三种MPM介绍                                                                                     Apache 2.X  支持插入式并行处理模块,称为多路处理模块(MPM)。在编译apache时必须选择也只能选择一个MPM,对类UNIX系统,有几个不同的MPM可供选择,它们会影响到apache的...

weixin_34100227的博客 258

架构实战关键知识点

24.Istio:https://istio.io/latest/docs/concepts/what-is-istio/华仔的 Pipeline 项⽬代码: https://github.com/yunhua-lee/arch-training。38.Reactor 事 件 响 应 :https://docs.oracle.com/javase/7/docs/api/java/nio/channels/Se lectionKey.html。

静静是我女朋友 945
上一篇: 优化-处理大量定时任务的思路
下一篇: SEO实践-持续更新
码哥说
博客等级 码龄8年 5645粉丝 172原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码哥说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值