Apache优化配置——工作模式
admin
2023-03-19 17:01:45
0

Apache所运行的硬件环境都是对性能影响最大的因素

各个硬件指标中,对性能影响最大的是内存,其次是硬盘的速度

●Apache的工作模式

1、prefork模式(一个 非线程型的)

⑴、主要工作方式:当Apache服务器启动后,mpm_prefork模块会预先创建多个子进程(默认为5个),每个子进程只有一个线程,当接收到客户端的请求后,mpm_prefork模块再将请求转交给子进程处理,并且每个子进程同时只能用于处理单个请求。如果当前的请求数将超过预先创建的子进程数时,mpm_prefork模块就会创建新的子进程来处理额外的请求。Apache总是试图保持一些备用的或者是空闲的子进程用于迎接即将到来的请求,这样客户端的请求就不需要在接收后等候子进程的产生。

⑵prefork在效率上要比worker要高,但是内存使用大多不擅长处理高并发的场景

⑶Apache在prefork工作模式下影响性能的重要参数说明:

#prefork MPM

        StartServers    5        #Apache启动时默认开始的子进程数

        MinSpareServers    5        #最小的闲置子进程数

        MaxSpareServers    10        #最大的闲置子进程数,

        MaxRequestWorkers    250        #MaxRequestWorkers设置了允许同时最大接入的请求数量,任何超过MaxRequestWorkers限制的请求将进入等候队列

        MaxConnectionsPerChild    500        #设置的是每个子进程可处理的请求数。每个进程在处理了“MaxConnectionsPerChild”请求后将自动销毁。0意味着无限,即子进程永不销毁。设置为1时可防止意外的内存泄漏。设置为2时表示在服务器负载下降的时候会自动减少子进程数。可根据服务器的负载来调整此值

★注:

①MaxRequestWorkers是这些指令中最为重要的一个,设定的是Apache可以同时处理的请求,是对Apache性能影响最大的参数。如果请求总数已经达到这个值(通过ps -ef | grep http | wc -l来确认)那么后面的请求就要排队,直到某个已处理请求完毕。这就是系统资源还剩下很多而http访问却很慢的主要原因。虽然理论上这个值越大,可以处理的请求就越多,建议将初始值设为以MB为单位的最大物理内存/2,然后根据负载情况进行动态调整。

②prefork控制进程在最初建立“StartServers”子进程后,为了满足MinSpareServers设置的需要创建一个进程,等待一秒钟,继续创建两个,再等待一秒钟,继续创建四个......如此按指数级增加创建的进程数,最多达到每秒32个,直到满足MinSpareServers设置的值为止,这种模式可以不必再请求到来时再产生新的进程,从而减小了系统开销以增加性能。MaxSpareServers设置了最大的空闲进程数,如果空闲进程数大于这个值,Apache会kill掉一些多余的进程,这个值不要设的过大,但如果设的值比MinSpareServers小,Apache会自动把其调整为MinSpareServers+1。如果站点负载较大,可考虑同时加大MinSpareServers和MaxSpareServers。

ServerLimit和MaxClients(MaxRequestWorkers)的区别:在Apache时代,控制最大进程数只有MaxClients这个参数,并且这个参数最大值为256,并且是写死了的,试图设置为超过256是无效的,这是由于Apache1时代的服务器硬件是限制的。但是Apache2时代由于服务器硬件的升级,硬件已经不再是限制,所以ServerLimit这个参数来控制最大进程数,ServerLimit值>=MaxClient值才有效。ServerLimit要放在MaxClients之前,值不要小于Maxclients。

查看Apache加载的模块:apachectl -t -D DUMP_MODULES 或 apachectl -M 或 apachectl -l

    查看Apache的工作模式:httpd -v 或 httpd -l

修改prefork参数和启动prefork模式

   vi /usr/local/http-2.4.23/conf/extra/httpd-mpm.conf

    vi /usr/local/http-2.4.23/conf/httpd.conf 添加两行:LoadModule mpm_prefork_module/mod_mpm_prefork.so 和 Include conf/extra/httpd-mpm.conf

    重启httpd服务

2、Worker模式(多线程多进程) 

⑴与prefork的比较:prefork速度要稍高于worker,然而它需要的CPU和memory资源也稍多于worker

⑵Apache在worker工作模式下影响性能的重要参数说明

#worker MPM

    StartServers    3        #Apache启动时默认开始的子进程数

    MinSpareThreads    75        #最小空闲数量的工作进程

    MaxSpareThreads    250        #最大空闲数量的工作线程

    ThreadPerChild    25        #每个子进程产生的线程数量

    MaxRequestWorkers    400        #MaxRequestWorkers设置了允许同时最大接入的请求数量任何超过MaxRequestWorkers限制的请求将进入等候队列

    MaxConnectionsPerChild    0        #设置的是每个子进程可处理的请求数每个进程在处理了MaxConnectionsPerChild请求后将自动销毁0意味着无限即子进程永不销毁

★注:

①Worker由主控制进程生成“StartServers”子进程,每个子进程中包含固定的ThreadsPerChild线程数,各个线程独立地处理请求。同样,为了不在请求到来时再生成线程,MinSpareThreads和MaxSpareThreads设置了最少和最多的空闲线程数。而MaxRequestWorkers设置了同时连入的clients最大总数,如果现有子进程中的线程总数不能满足负载,控制进程将派生新的子进程。MinSpareThreads和MaxSpareThreads的最大缺省值分别是75和250.这两个参数对Apache的性能影响并不大,可以按照实际情况相应调节

② ThreadsPerChild是worker MPM 中与性能相关最密切的指令,ThreadsPerChild的最大缺省值是64,如果负载较大,64位也是不够的,这时要使用ThreadLimit指令,他的最大缺省值是20000

③Worker模式下所能同时处理的请求总数是由子进程总数乘以ThreadsPerChild值决定的,应该大于等于MaxRequestWorkers。如果负载很大,现有的子进程数不能满足时,控制进程会派生新的子进。默认最大的子进程总数是16加大时也需要显示声明ServerLimit。需要注意的是,如果显示声明了ServerLimit,那么它乘以ThreadsPerChild的值必须大于等于MaxRequestWorkers,而且MaxRequestWorkers必须是ThreadsPerChild的整数倍,否则Apache将会自动调节到一个相应值

④进程与线程的区别(线程是指进程内的一个执行单元,也是进程内的可调度实体)

a、地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间

b、资源拥有:进程是资源分配和拥有的单位,同一进程内的线程共享进程的资源

c、线程是处理器调度的基本单位,但进程不是

d、二者均可并发执行:进程和线程都是由操作 系统所体会的程序运行的基本单元, 系统利用该基本单元实现系统对应用的并发性

e、简单来说,就是一个程序至少有一个进程,一个进程至少有一个线程

    线程的划分尺度小于进程,使得多线程程序的并发性高

    进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率

3、Event模式

这是Apache最新的工作模式,是worker模式的变种,它把服务进程从连接中分离出来,worker模式不同的是在于它解决了,keep-alive长连接的时候占用线程资源被浪费的问题,在event工作模式中,会有一些专门的线程用来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务器的线程,执行完毕后,又允许它释放。这增强了在高并发场景下的请求处理。event模式不能很好的支持https的访问


相关内容

热门资讯

AI开源公开信签署企业增至50... IT之家 7 月 26 日消息,英伟达、微软、IBM、Meta 等 25 家美国科技企业本周(7 月...
南阳快手短视频代运营企业的服务... 在短视频平台快速发展的背景下,企业通过快手等渠道进行内容运营已成为常见的市场动作。对于希望借助短视频...
普通人该如何跟上科技发展的步伐 这个被称作科技的词汇, 听起来既有宏大之感, 又颇为遥远, 好似仅仅归属于在实验室里专心致志钻研的科...
原创 王... 菲尔兹奖名单一出,邓煜和王虹两位华人数学家共同获奖,本应是一件令人振奋的喜讯。然而,王虹那段仅3分1...
《万物》杂志首个阅读空间亮相正... 26日,由国内知名的青少年家庭科普期刊《万物》杂志与广州正佳自然科学探索中心联合打造的阅读互动空间—...
从康复机器人到脑机接口 智能康... 天津北方网讯:对脑卒中患者来说,重新抬起手臂、迈出一步,往往需要持续的康复训练,逐步恢复运动功能;对...
原创 苹... 当苹果、谷歌、斯坦福、麻省理工都无法留住一位年轻的中国AI天才时,究竟是什么力量吸引他毅然回国?为何...
为什么新能源车供应链要本地化? 当前汽车产业变革加速,电动化成为核心发展方向。车企为了在激烈市场中站稳脚跟,必须优化生产结构。其中,...
携程罚单的真正影响,不是酒店变... 文 | 听风译码 7月25日,市场监管总局对携程开出51.79亿元天价罚单。 全网叫好。 但如果你...
自己管理自己,我国成功发射两颗... 7月24日消息,力箭一号遥十五运载火箭今日在东风商业航天创新试验区成功发射,以“一箭5星”方式将5颗...