博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
apache几种工作模式对比
阅读量:3556 次
发布时间:2019-05-20

本文共 1394 字,大约阅读时间需要 4 分钟。


apache2主要的优势就是对多处理器的支持更好,在编译时同过使用--with-mpm选项来决定apache2的工作模式。如果知道当前的apache2使用什么工作机制,可以通过httpd -l命令列出apache的所有模块,就可以知道其工作方式:
prefork:如果
httpd -l列出prefork.c,则需要对下面的段进行配置:
<IfModule prefork.c>
StartServers 5 #启动apache时启动的httpd进程个数。
MinSpareServers 5 #服务器保持的最小空闲进程数。
MaxSpareServers 10 #服务器保持的最大空闲进程数。
MaxClients 150 #最大并发连接数。
MaxRequestsPerChild 1000 #每个子进程被请求服务多少次后被kill掉。0表示不限制,推荐设置为1000。
</IfModule>

在该工作模式下,服务器启动后起动5个httpd进程(加父进程共6个,通过ps -ax|grep httpd命令可以看到)。当有用户连接时,apache会使用一个空闲进程为该连接服务,同时父进程会fork一个子进程。直到内存中的空闲进程达到MaxSpareServers。该模式是为了兼容一些旧版本的程序。我缺省编译时的选项。

worker:如果httpd -l列出worker.c,则需要对下面的段进行配置:
<IfModule worker.c>
StartServers 2 #启动apache时启动的httpd进程个数。
MaxClients 150 #最大并发连接数。
MinSpareThreads 25 #服务器保持的最小空闲线程数。
MaxSpareThreads 75 #服务器保持的最大空闲线程数。
ThreadsPerChild 25 #每个子进程的产生的线程数。
MaxRequestsPerChild 0 #每个子进程被请求服务多少次后被kill掉。0表示不限制,推荐设置为1000。
</IfModule>

该模式是由线程来监听客户的连接。当有新客户连接时,由其中的一个空闲线程接受连接。服务器在启动时启动两个进程,每个进程产生的线程数是固定的(ThreadsPerChild决定),因此启动时有50个线程。当50个线程不够用时,服务器自动fork一个进程,再产生25个线程。

perchild:如果httpd -l列出perchild.c,则需要对下面的段进行配置:

<IfModule perchild.c>
NumServers 5 #服务器启动时启动的子进程数
StartThreads 5 #每个子进程启动时启动的线程数
MinSpareThreads 5 #内存中的最小空闲线程数
MaxSpareThreads 10 #最大空闲线程数
MaxThreadsPerChild 2000 #每个线程最多被请求多少次后退出。0不受限制。
MaxRequestsPerChild 10000 #每个子进程服务多少次后被重新fork。0表示不受限制。
</IfModule>
该模式下,子进程的数量是固定的,线程数不受限制。当客户端连接到服务器时,又空闲的线程提供服务。 如果空闲线程数不够,子进程自动产生线程来为新的连接服务。该模式用于多站点服务器。

转载地址:http://afnrj.baihongyu.com/

你可能感兴趣的文章
【笔记】整合Druid数据源 Druid监控以及属性绑定配置 在浏览器输入端口进入监控页面查看
查看>>
【笔记】springboot+spring security登录流程实现
查看>>
【练习】2021下半年数据结构刷题笔记和总结 (一)(图和动态规划)
查看>>
【项目实战】vue+springboot项目使用富文本编辑器实现长文章发表和展示
查看>>
【项目】uniapp前端接收后端springboot数据并渲染到界面+使用swiper和uView
查看>>
【学习笔记】比较分别用prim和kruskal实现最小生成树和算法优化方案
查看>>
【记录】python多线程的使用 线程同步(LOCK和RLOCK) python与mysql数据库交互实现增加和查找 python的格式化输出
查看>>
【算法学习】动态规划之输出两个字符串最长公共子序列c++版
查看>>
【学习笔记】redis命令和使用(一)与key有关的命令
查看>>
【算法】深度优先搜索遍历的应用 设计算法以求解无向图G的连通分量的个数和无向图G的边数
查看>>
【算法】广度遍历算法的应用 求出距离顶点v0的最短路径长度为最长的一个顶点,图结构的bfs生成树及其双亲表示形式
查看>>
【项目】springboot中使用kaptcha生成验证码,登录时密码加盐处理
查看>>
【JAVA多线程学习笔记】(1)实现线程的方式 线程生命周期 操作线程的方法
查看>>
【java学习笔记-io流 文件读写和键盘读写】带缓存的输入/输出流和数据输入/输出流
查看>>
【Java作业】实验二 货物进销管理系统(运行成功完整代码
查看>>
【学习笔记】mongoDB初步(一)MongoDB的安装和增删改查基本语法,使用和命令
查看>>
【学习笔记】在windows下进行基于TCP的本地客户端和服务端socket通信
查看>>
【学习笔记】mongodb的使用(二)flask项目使用mongodb实现人员管理系统
查看>>
【前端笔记】直接用路由渲染面包屑导航信息和菜单伸缩
查看>>
【练习】2021下半年数据结构刷题笔记和总结 (二) 树、查找-- 不同的排序算法、二叉排序树 平衡二叉树、哈希表查找、线索二叉树、
查看>>