httpd工作模式中的prefork、worker、event优缺点:
http服务,需要客户端和服务器端建立连接,httpd有三种工作模式:prefork worker event
优点:在资源够用的情况下服务稳定
worker:这个就是改进之前的工作模型,就是让一个进程处理多个响应.
event:这样模型就是让一个进程产生多个线程,让每个线程处理处理客户端请求,并且每个线程可以处理多个线程
查看MPM,可以使用httpd -l命令来查看当前加载的MPM模块
[root@s ~]# httpd -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c
http 2.2和2.4的区别
httpd2.2 可以通过修改配置文件来改变当前服务器所试用的模块.
http2.4 :两种方式: 静态模块 动态模块
如果把MPM编译成静态模块,那么要改变MPM,只能通过重新编译安装httpd来修改.
[root@s yum.repos.d]# ps uax |grep httpd
root 2918 0.0 0.3 119088 1616 pts/2 S 15:14 0:00 vi httpd
root 2997 0.0 0.5 183720 2720 ? Ss 15:33 0:00 /usr/sbin/httpd
root 3001 0.0 0.1 103252 824 pts/1 S 15:33 0:00 grep httpd
去掉 /etc/sysconfig/httpd 这行的注释
HTTPD=/usr/sbin/httpd.worker
[root@s yum.repos.d]# ps aux |grep http
root 2918 0.0 0.3 119088 1616 pts/2 S 15:14 0:00 vi httpd
root 3029 0.0 0.8 186560 4164 ? Ss 15:34 0:00 /usr/sbin/httpd.worker
apache 3034 0.0 0.6 596356 3340 ? Sl 15:35 0:00 /usr/sbin/httpd.worker
apache 3035 0.1 0.6 596356 3336 ? Sl 15:35 0:00 /usr/sbin/httpd.worker
apache 3036 0.1 0.6 596356 3340 ? Sl 15:35 0:00 /usr/sbin/httpd.worker
root 3150 0.0 0.1 103252 828 pts/1 S 15:35 0:00 grep http
<IfModule prefork.c> 如果prefork.c模块存在,则定义在标签内的参数有效
StartServers 8 服务开启默认启动的工作进程数,不包含主进程
MinSpareServers 5 最少空闲进程数;
MaxSpareServers 20 最大空闲进程数;
ServerLimit 256 最大活动进程数;
MaxClients 256 并发请求的最大数,一条进程最多处理多少个请求
MaxRequestsPerChild 4000 每个子进程在生命周期内所能服务的最多请求个数
</IfModule>
<IfModule worker.c>
StartServers 4 服务开启时,启动的子进程的个数;
MaxClients 300 并发请求的最大数;
MinSpareThreads 25 最小空闲线程数;
MaxSpareThreads 75 最大空闲进程数;
ThreadsPerChild 25 每个子进程线程数;
MaxRequestsPerChild 0 每个子进程在生命周期内所能够服务的最多请求个数,0表示不限定
</IfModule>
httpd 2.4中event参数
<IfModule mpm_event_module>
StartServices 默认进程数
MinSpareThreads 最小空闲进程数
MaxSpareThreads 最大空闲进程数
ThreadsPerChild 每个子进程可以生成的线程数
MaxReqestWorkers 最大线程数量
MaxConnectionPerchild 子进程的最大连接数,当达到设置值以后,APACHE就会结束当前的子进程
总结: 安全和效率中考虑参数设置,并且自己测试,才能得到比较满意的配置