网站之家技术交流论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1293|回复: 0

httpd进程与线程理解总结

[复制链接]
发表于 2015-10-10 21:52:43 | 显示全部楼层 |阅读模式
1.为什么会有多个httpd进程?
~/WebSphere/HTTPServer/logs/httpd.pid
记录httpd守护进程的进程号。
httpd能自动复制其自身,因此系统中有多个httpd进程;
但只有一个进程为最初启动的进程,它为其他进程的父进程;
对父进程发送信号将影响所有的httpd进程;
httpd.pid定义的文件中就记录httpd父进程的进程号

2.会有多少个httpd进程?
httpd进程子进程的个数配置在http.conf的StartServers参数中:
~/WebSphere/HTTPServer/Plugins/config/httpd.conf
< IfModule worker.c>
StartServers X

</IfModule>

查询方法:
ps -ef|grep httpd|wc -l

3.httpd为什么需要多进程?
Worker
worker支持多线程和多进程混合模型的MPM;
由于使用线程来处理,所以可以处理相对海量的请求,而系统资源的开销要小于基于进程的服务器;
但是,worker也使用了多进程,每个进程又生成多个线程,以 获得基于进程服务器的稳定性;
在configure –with-mpm=worker后,进行make编译、make install安装。
在缺省生成的httpd-mpm.conf中有以下默认配置段:
<IfModule worker.c>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
< /IfModule>
Worker由主控制进程生成“StartServers”个子进程;
每个子进程中包含固定的ThreadsPerChild线程数,各个线程独立地处理请求;
同样, 为了不在请求到来时再生成线程,MinSpareThreads和MaxSpareThreads设置了最少和最多的空闲线程数;
而MaxClients 设置了同时连入的clients最大总数;
如果现有子进程中的线程总数不能满足负载,控制进程将派生新的子进程;
MinSpareThreads和 MaxSpareThreads的最大缺省值分别是75和250;
这两个参数对Apache的性能影响并不大,可以按照实际情况相应调节;
ThreadsPerChild是worker MPM中与性能相关最密切的指令,ThreadsPerChild的最大缺省值是64;
如果负载较大,64也是不够的,这时要显式使用 ThreadLimit指令,它的最大缺省值是20000;
Worker模式下所能同时处理的请求总数是由子进程总数乘以ThreadsPerChild 值决定的,应该大于等于MaxClients;
如果负载很大,现有的子进程数不能满足时,控制进程会派生新的子进程;
默认最大的子进程总数是16,加大时 也需要显式声明ServerLimit(最大值是20000);
需要注意的是,如果显式声明了ServerLimit,那么它乘以 ThreadsPerChild的值必须大于等于MaxClients,
而且MaxClients必须是ThreadsPerChild的整数倍,否则 Apache将会自动调节到一个相应值。

4.怎样查看httpd进程和线程的详细信息?
查看进程信息:
ps -eLf |grep httpd|grep -v grep
查看线程信息:
ps -eLf |grep httpd|grep -v grep|awk '{print $4}'

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|网站之家技术交流论坛 ( 粤ICP备09092995号 )

GMT+8, 2024-5-3 13:21 , Processed in 0.082767 second(s), 7 queries , File On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表