由于BeOS、、OS/2等操作系统在平常的开发工作中并不常见,所以这里主要讲解和Unix/Linux操作系统上的MPM模块。在和Unix/Linux操作系统上,主要的MPM模块有三种:、、和。
模块
该模块主要用于Unix/Linux平台的服务器中。它的主要工作方式是:在服务器启动时,模块会预先创建多个子进程(默认为5个)。当接收到客户端的请求时,模块会将请求转交给子进程进行处理,并且每个子进程每次只能处理一个请求。如果当前的请求数将超过预先创建的子进程数,模块将创建新的子进程来处理额外的请求。总是尽量保留一些备用或空闲的子进程来满足即将到来的请求。这样,客户端的请求接收到后就不需要等待子进程的生成。
由于模块中每个请求都对应一个子进程,因此占用的系统资源比其他两个模块要多。但是模块的优点在于其每个子进程都会独立处理对应的单个请求,这样如果其中一个请求出现问题,不会影响其他请求。同时模块可以适用于非线程安全的第三方模块(如非线程安全版的 PHP),在不支持线程调试的平台上也很容易调试。另外模块的稳定性也比模块高。
模块
模块也主要用在Unix/Linux平台的服务器中,可以看作是模块的改进版本。模块的工作方式和模块类似。但是由于基于进程(举个例子)的处理方式在处理同样的请求时比基于线程的处理方式占用更多的系统资源。因此和模块不同,模块会让每个子进程创建固定数量的服务线程和一个监听线程,让每个服务线程处理客户端请求。监听线程用于监听到来的请求,并传递给服务线程进行处理和响应。始终尽量保持一个备用的或者空闲的服务线程池。这样就可以在不等待新线程或者新进程的建立的情况下处理客户端。
模块相对于模块来说可以进一步减少系统资源的开销,另外它还采用了多进程,每个进程都有多个线程,所以相对于完全基于线程的处理方式来说增加了稳定性。
模块
该模块是针对操作系统优化的MPM模块,它只创建一个子进程,并在此子进程中生成多个线程轮流处理请求。
修改MPM模块配置
对MPM模块有了一定的了解之后,我们可以针对不同的MPM模块修改最大并发连接数配置。
1.启用MPM模块配置文件
Apace安装目录/conf/extra下有一个名为httpd-mpm.conf的配置文件,这个文件主要用于MPM模块的配置,但是默认情况下MPM模块配置文件是没有启用的,因此我们需要在httpd.conf文件中启用这个配置文件,如下所示:
# -pool (MPM ) conf/extra/httpd-mpm.conf (删除此行前面的注释符号“#”)
2.修改MPM模块配置文件中的相关配置
启动MPM模块配置文件之后,我们可以使用文本编辑器打开该配置文件,可以看到配置文件中有很多配置节点,如下图所示:
只有使用对应的MPM模块,对应的配置才会生效。
此时我们需要根据当前服务器使用的MPM模块,修改相应节点下的参数配置,首先我们来看一下该模块下的默认配置:
#由于模块只会创建一个子进程,所以这里单个子进程的参数设置相当于整个进程的参数设置。150#建议设置:小型网站 = 1000 中型网站 = 1000~2000 大型网站 = 2000~ild 0#建议设置:小型 = 10000 中型或大型 = 20000~
相应配置参数作用如下:
每个子进程的最大并发线程数。
每个子进程允许处理的请求总数。如果累计处理的请求数超过此值,子进程将结束(然后根据需要判断是否创建新的子进程)。将此值设置为 0 表示对请求总数没有限制(子进程永不结束)。
建议将该参数设置为非零值,这样可以带来以下两个好处:
这可以防止程序中可能发生的内存泄漏无限期地持续下去并耗尽内存。
赋予进程有限的生命周期有助于在服务器负载减少时减少活动进程的数量。
注意:以上统计请求数相关的参数中,只统计该连接的第一次请求。
接下来我们看一下模块以及模块下的默认配置:
#模块5#推荐设置:小=默认中=20~50大=50~5#推荐设置:与保持一致10#推荐设置:小=20中=30~80大=80~#推荐设置:小=500中=500~1500大=1500~ild0#推荐设置:小=10000中或大=10000~(此外,还需要设置额外的参数,最好与此参数的值保持一致。)
#:启动的服务器进程数
#: 最小服务器进程数,保存用于备份
#: 最大服务器进程数,保存用于备份
#:允许启动的最大服务器进程数
#ld:服务最大连接数的服务器进程
控制进程初始创建“”个子进程后,达到设定的需求创建一个进程,等待一秒,继续创建两个,等待一秒,继续创建四个……如此反复,创建的进程数呈指数增长,最高可达每秒32个,直到满足设定值。此模式消除了请求到来时生成新进程的需要,从而减少了系统开销,提高了性能。设置了最大空闲进程数,如果空闲进程数大于此值,会自动杀死一些多余的进程。此值不要设置过大,但如果值设置较小,会自动调整为+1。如果站点负载较大,可以考虑同时增加和。
这设置了每个子进程可以处理的请求数。每个子进程在处理完“”个请求后将自动销毁。0 表示无限,即子进程永远不会被销毁。虽然默认设置 0 允许每个子进程处理更多的请求,但将其设置为非零值有两个重要的好处:
1. 防止意外的内存泄漏。2. 当服务器负载降低时,自动减少子进程的数量。
因此可以根据服务器的负载来调整这个值。
该指令对同时处理的请求数量设置了限制。任何连接尝试通常都会排队,最多可达指令规定的数量。
在 3.13 之前的版本中它被称为。
(这个是这几条命令中最重要的一条,它设置了可以同时处理的请求数,是对性能影响最大的参数。默认值150是远远不够的,如果总的请求数已经达到了这个值(可以通过ps -ef||wc -l来确认),那么后面的请求就会一直排队,直到一个请求处理完成。这也是为什么在系统资源还剩下很多的情况下HTTP访问还是很慢的主要原因。虽然理论上这个值越大,可以处理的请求就越多,但是默认的限制不能大于256。)
#模块2#推荐设置:小=默认中=3~5大=5~150#推荐设置:小=500中=500~1500大=1500~25#推荐设置:小=默认中=50~100大=100~75#推荐设置:小=默认中=80~160大=200~40025#推荐设置:小=默认中=50~100大=100~ld0#推荐设置:小=10000中或大=10000~50000(另外,如果/大于16,则必须设置附加参数,该参数必须大于或等于/的值。)
相应配置参数作用如下:
启动时要创建的子进程的数量。
空闲子进程的最小数量。
空闲子进程是未处理请求的子进程。如果空闲子进程数小于 ,则将以每秒一个的最大速率创建新子进程。此参数仅在非常繁忙的机器上才需要调整。此值不应太大。
空闲子进程的最大数量。
此参数只应在非常繁忙的机器上调整。此值不应太大。如果您将此指令设置为小于 1 的值,它将自动更改为 +1。
允许同时进行的连接请求的最大数量。
任何超出限制的请求都将进入等待队列,直到达到指令限制的最大值。
对于非线程 MPM(即 ),这表示可用于处理客户端请求的最大子进程数。默认值为 256。要增加此值,您还必须增加 。
对于线程或混合 MPM(即 或 ),这是可用于处理客户端请求的最大线程数。线程 MPM 的默认值为 50。对于混合 MPM,默认值为 16() 乘以 25()。因此,要增加线程数以提供超过 16 个进程,您必须增加这两个值。
空闲线程的最小数量。
不同的MPM以不同的方式处理该指令:
的默认值为 75。此 MPM 将基于整个服务器监控空闲线程数。如果服务器中的空闲线程总数太低,子进程将产生新的空闲线程。的默认值为 10。由于此 MPM 只运行单个子进程,因此此 MPM 还基于整个服务器监控空闲线程数。 和 的工作方式类似,默认值为 1,默认值为 5。
空闲线程的最大数量。
不同的MPM以不同的方式处理该指令:
的默认值为 250。此 MPM 将基于整个服务器来监视空闲线程数。如果服务器中的空闲线程总数过高,子进程将杀死多余的空闲线程。的默认值为 100。由于此 MPM 仅运行单个子进程,因此此 MPM 还会基于整个服务器来监视空闲线程数。和 的工作方式类似。的默认值为 50;的默认值为 10。
注意:表示允许创建的最大进程数。值得注意的是,编译时内部存在 20000 的硬性限制(对于模块)。您不能超过此限制。
使用此指令时要小心。如果将 设置为远高于实际需要的值,则会分配过多的共享内存。如果将 设置为超出系统可以处理的值,则可能无法启动,或者系统可能会变得不稳定。
注意:配置相关参数时,请确保服务器有足够的硬件性能(例如 CPU、内存等)。如果在启动后,随着服务器运行时间的增加,发现服务器的内存占用率也随之升高,则程序可能存在内存泄漏。请向下调整参数值,降低内存泄漏的影响,然后尽快查找程序中的问题。
扫一扫在手机端查看
-
Tags : 并发数量_修改apache最大并发连接数
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。