Apache提供并发连接请求数量
2016-08-17 21:49
232 查看
1. 了解Apache采用的MPM(Multi-Processing Modules,多道处理模块)
MPM是Apache的核心,它的作用是管理网络连接、调度请求。
Apache2.0中MPM分为3种(perfork、worker、event)。
perfork从Apache1.3中继承下来的,它采用的是进程管理模式,所以它可以提供更可靠的性能和更好的兼容性;
worker是Apache2.0中新增加的方式,它采用了线程控制方法,可以比perfork更节约系统开销、处理更多的数据量,但同时兼容性并不是很好,很多旧的程序无法工作在worker下;
event仍处于试验阶段,它为每个任务分配不同的进程池,目前不应该采用。
通过命令httpd –l 可以获取目前Apache采用的是哪种MPM
httpd -l
![](http://img.blog.csdn.net/20160817212710063)
httpd -V
![](http://img.blog.csdn.net/20160817212804048)
2.了解perfork的工作方式
查看配置文件httpd-mpm.conf,可以看到perfork的配置端,大致如下:
当Apache被启动时,Apache会自动创建StartServers个进程,并且尽力将空闲进程数保持在MinSpareServers和MaxSpareServers之间。
如果空闲进程小于MinSpareServers,Apache将会以大约每秒1个的速度新建进程。
如果空闲进程小于MaxSpareServers,Apache将会删除额空闲进程,释放服务器资源。
进程数的最大值由MaxClient控制,在Apache1.3中最大只能设置为256,但在Apache2.0中,可以通过在配置开头增加ServerLimit项目来突破256的限制,此时必须MaxClients<=ServerLimit<=20000
MaxRequestsPerChild用来控制每个进程在处理了多少次请求之后自动销毁,这个参数可以设置为0表示无限(即不销毁进程)
3. 优化perfork
对于一个负载相对较高的网站来说,256的进程限制是不够的,如果服务器已经达到256的极限,那么接下来的访问就需要排队,这也就是为什么某些服务器负载不高,但是访问却很慢的原因之一。所以首先应该了解服务器在繁忙时的进程数量。
通过设置ServerLimit和MaxClients来达到为服务器软扩容的目的。
然后,在访问量高峰期,经常会出现的情况是突然之间发生非常多的并发连接,然后突然之间减少了很多访问。如果Apache没有准备足够数量的预备进程,那访问只能等待Apache每秒1个的新增进程,随后又要将多余的进程删除,那Apache只能一直忙于新建和销毁进程,大大地降低了访问速度。可以适当增加StartServers、MinSpareServers、MaxSpareServers来使得Apache不需要一直忙于做无用功。
最后强烈推荐MaxRequestsPerChild不要设置为0,设置为非0,可以保护Apache进程免遭内存泄漏的影响,因为你不知道运行在Apache上的应用程序在什么时候回出错导致内存泄漏。
设置完之后大致是这样的:
1. httpd-mpm.conf配置
Apache的线程数控制文件为httpd-mpm.conf,在conf/extra文件夹下面,要是该配置文件其作用需要在httpd.conf中将#Include conf/extra/httpd-mpm.conf前#去掉,以便httpd-mpm.conf生效。
在windows系统中,其作用的是Winnt mpm段
windows下如果优化Apache的性能主要是通过专门针对WindowsNT优化的MPM(多路处理模块)-mpm_winnt.c来优化的,它使用一个单独的父进程产生一个单独的子进程,在这个子进程中轮流产生多个线程来处理请求。也就是说mpm_winnt只能启动父子两个进程,不能像Linux下那样同时启动多个进程。
mpm_winnt主要通过ThreadsPerChild和MaxRequestsPerChild两个参数来优化Apache.
ThreadsPerChild
这个参数用于设置每个进程的线程数,子进程在启动时建立这些线程后就不再建立新的线程了。一方面因为mpm_winnt不能启动多个进程,所以这个数值要足够大,以便可以处理可能的请求高峰;另一方面该参数以服务器的响应速度为准的,数目太大的反而会变慢。因此需要综合均衡一个合理的数值。mpm_winnt上的默认值是64,最大值是1920.这里建议设置为100-500之间,服务器性能高的话值大一些,反之值小一些。
MaxRequestsPerChild
该参数表示每个子进程能够处理的最大请求数,即同时间内子进程数目。设置为零表示不限制,mpm_winnt上的默认值就是0.
官方参考手册中不建议设置为0,主要基于两点考虑:
(1) 可以防止(偶然的)内存泄漏无限进行,从而耗尽内存;
(2) 给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。
因此这个参数的值更大程度上取决于服务器的内存,如果内存比较大的话可以设置为0或很大的数字,否则设置一个小的数值。需要说明的是,如果这个值设置的太小的话会造成Apache频繁重启,在日志文件中会看到如下的文字:Process exiting because it reached MaxRequestsPerChild. Signalingthe parent, 这样一来降低了Apache的总体性能。
![](http://img.blog.csdn.net/20160818122824572)
1. 了解Apache采用的MPM(Multi-Processing Modules,多道处理模块)
MPM是Apache的核心,它的作用是管理网络连接、调度请求。
Apache2.0中MPM分为3种(perfork、worker、event)。
perfork从Apache1.3中继承下来的,它采用的是进程管理模式,所以它可以提供更可靠的性能和更好的兼容性;
worker是Apache2.0中新增加的方式,它采用了线程控制方法,可以比perfork更节约系统开销、处理更多的数据量,但同时兼容性并不是很好,很多旧的程序无法工作在worker下;
event仍处于试验阶段,它为每个任务分配不同的进程池,目前不应该采用。
通过命令httpd –l 可以获取目前Apache采用的是哪种MPM
httpd -l
![](http://img.blog.csdn.net/20160817212710063)
httpd -V
![](http://img.blog.csdn.net/20160817212804048)
2.了解perfork的工作方式
查看配置文件httpd-mpm.conf,可以看到perfork的配置端,大致如下:
当Apache被启动时,Apache会自动创建StartServers个进程,并且尽力将空闲进程数保持在MinSpareServers和MaxSpareServers之间。
如果空闲进程小于MinSpareServers,Apache将会以大约每秒1个的速度新建进程。
如果空闲进程小于MaxSpareServers,Apache将会删除额空闲进程,释放服务器资源。
进程数的最大值由MaxClient控制,在Apache1.3中最大只能设置为256,但在Apache2.0中,可以通过在配置开头增加ServerLimit项目来突破256的限制,此时必须MaxClients<=ServerLimit<=20000
MaxRequestsPerChild用来控制每个进程在处理了多少次请求之后自动销毁,这个参数可以设置为0表示无限(即不销毁进程)
3. 优化perfork
对于一个负载相对较高的网站来说,256的进程限制是不够的,如果服务器已经达到256的极限,那么接下来的访问就需要排队,这也就是为什么某些服务器负载不高,但是访问却很慢的原因之一。所以首先应该了解服务器在繁忙时的进程数量。
通过设置ServerLimit和MaxClients来达到为服务器软扩容的目的。
然后,在访问量高峰期,经常会出现的情况是突然之间发生非常多的并发连接,然后突然之间减少了很多访问。如果Apache没有准备足够数量的预备进程,那访问只能等待Apache每秒1个的新增进程,随后又要将多余的进程删除,那Apache只能一直忙于新建和销毁进程,大大地降低了访问速度。可以适当增加StartServers、MinSpareServers、MaxSpareServers来使得Apache不需要一直忙于做无用功。
最后强烈推荐MaxRequestsPerChild不要设置为0,设置为非0,可以保护Apache进程免遭内存泄漏的影响,因为你不知道运行在Apache上的应用程序在什么时候回出错导致内存泄漏。
设置完之后大致是这样的:
1. httpd-mpm.conf配置
Apache的线程数控制文件为httpd-mpm.conf,在conf/extra文件夹下面,要是该配置文件其作用需要在httpd.conf中将#Include conf/extra/httpd-mpm.conf前#去掉,以便httpd-mpm.conf生效。
在windows系统中,其作用的是Winnt mpm段
windows下如果优化Apache的性能主要是通过专门针对WindowsNT优化的MPM(多路处理模块)-mpm_winnt.c来优化的,它使用一个单独的父进程产生一个单独的子进程,在这个子进程中轮流产生多个线程来处理请求。也就是说mpm_winnt只能启动父子两个进程,不能像Linux下那样同时启动多个进程。
mpm_winnt主要通过ThreadsPerChild和MaxRequestsPerChild两个参数来优化Apache.
ThreadsPerChild
这个参数用于设置每个进程的线程数,子进程在启动时建立这些线程后就不再建立新的线程了。一方面因为mpm_winnt不能启动多个进程,所以这个数值要足够大,以便可以处理可能的请求高峰;另一方面该参数以服务器的响应速度为准的,数目太大的反而会变慢。因此需要综合均衡一个合理的数值。mpm_winnt上的默认值是64,最大值是1920.这里建议设置为100-500之间,服务器性能高的话值大一些,反之值小一些。
MaxRequestsPerChild
该参数表示每个子进程能够处理的最大请求数,即同时间内子进程数目。设置为零表示不限制,mpm_winnt上的默认值就是0.
官方参考手册中不建议设置为0,主要基于两点考虑:
(1) 可以防止(偶然的)内存泄漏无限进行,从而耗尽内存;
(2) 给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。
因此这个参数的值更大程度上取决于服务器的内存,如果内存比较大的话可以设置为0或很大的数字,否则设置一个小的数值。需要说明的是,如果这个值设置的太小的话会造成Apache频繁重启,在日志文件中会看到如下的文字:Process exiting because it reached MaxRequestsPerChild. Signalingthe parent, 这样一来降低了Apache的总体性能。
MPM是Apache的核心,它的作用是管理网络连接、调度请求。
Apache2.0中MPM分为3种(perfork、worker、event)。
perfork从Apache1.3中继承下来的,它采用的是进程管理模式,所以它可以提供更可靠的性能和更好的兼容性;
worker是Apache2.0中新增加的方式,它采用了线程控制方法,可以比perfork更节约系统开销、处理更多的数据量,但同时兼容性并不是很好,很多旧的程序无法工作在worker下;
event仍处于试验阶段,它为每个任务分配不同的进程池,目前不应该采用。
通过命令httpd –l 可以获取目前Apache采用的是哪种MPM
httpd -l
httpd -V
2.了解perfork的工作方式
查看配置文件httpd-mpm.conf,可以看到perfork的配置端,大致如下:
<IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxRequestWorkers 250 MaxConnectionsPerChild 0 </IfModule>
当Apache被启动时,Apache会自动创建StartServers个进程,并且尽力将空闲进程数保持在MinSpareServers和MaxSpareServers之间。
如果空闲进程小于MinSpareServers,Apache将会以大约每秒1个的速度新建进程。
如果空闲进程小于MaxSpareServers,Apache将会删除额空闲进程,释放服务器资源。
进程数的最大值由MaxClient控制,在Apache1.3中最大只能设置为256,但在Apache2.0中,可以通过在配置开头增加ServerLimit项目来突破256的限制,此时必须MaxClients<=ServerLimit<=20000
MaxRequestsPerChild用来控制每个进程在处理了多少次请求之后自动销毁,这个参数可以设置为0表示无限(即不销毁进程)
3. 优化perfork
对于一个负载相对较高的网站来说,256的进程限制是不够的,如果服务器已经达到256的极限,那么接下来的访问就需要排队,这也就是为什么某些服务器负载不高,但是访问却很慢的原因之一。所以首先应该了解服务器在繁忙时的进程数量。
通过设置ServerLimit和MaxClients来达到为服务器软扩容的目的。
然后,在访问量高峰期,经常会出现的情况是突然之间发生非常多的并发连接,然后突然之间减少了很多访问。如果Apache没有准备足够数量的预备进程,那访问只能等待Apache每秒1个的新增进程,随后又要将多余的进程删除,那Apache只能一直忙于新建和销毁进程,大大地降低了访问速度。可以适当增加StartServers、MinSpareServers、MaxSpareServers来使得Apache不需要一直忙于做无用功。
最后强烈推荐MaxRequestsPerChild不要设置为0,设置为非0,可以保护Apache进程免遭内存泄漏的影响,因为你不知道运行在Apache上的应用程序在什么时候回出错导致内存泄漏。
设置完之后大致是这样的:
<IfModule mpm_prefork_module> StartServers 1000 MinSpareServers 30 MaxSpareServers 30 MaxRequestWorkers 1000 MaxConnectionsPerChild 4000 </IfModule>
1. httpd-mpm.conf配置
Apache的线程数控制文件为httpd-mpm.conf,在conf/extra文件夹下面,要是该配置文件其作用需要在httpd.conf中将#Include conf/extra/httpd-mpm.conf前#去掉,以便httpd-mpm.conf生效。
在windows系统中,其作用的是Winnt mpm段
<IfModule mpm_winnt_module> ThreadsPerChild 150 MaxConnectionsPerChild 0 </IfModule>
windows下如果优化Apache的性能主要是通过专门针对WindowsNT优化的MPM(多路处理模块)-mpm_winnt.c来优化的,它使用一个单独的父进程产生一个单独的子进程,在这个子进程中轮流产生多个线程来处理请求。也就是说mpm_winnt只能启动父子两个进程,不能像Linux下那样同时启动多个进程。
mpm_winnt主要通过ThreadsPerChild和MaxRequestsPerChild两个参数来优化Apache.
ThreadsPerChild
这个参数用于设置每个进程的线程数,子进程在启动时建立这些线程后就不再建立新的线程了。一方面因为mpm_winnt不能启动多个进程,所以这个数值要足够大,以便可以处理可能的请求高峰;另一方面该参数以服务器的响应速度为准的,数目太大的反而会变慢。因此需要综合均衡一个合理的数值。mpm_winnt上的默认值是64,最大值是1920.这里建议设置为100-500之间,服务器性能高的话值大一些,反之值小一些。
MaxRequestsPerChild
该参数表示每个子进程能够处理的最大请求数,即同时间内子进程数目。设置为零表示不限制,mpm_winnt上的默认值就是0.
官方参考手册中不建议设置为0,主要基于两点考虑:
(1) 可以防止(偶然的)内存泄漏无限进行,从而耗尽内存;
(2) 给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。
因此这个参数的值更大程度上取决于服务器的内存,如果内存比较大的话可以设置为0或很大的数字,否则设置一个小的数值。需要说明的是,如果这个值设置的太小的话会造成Apache频繁重启,在日志文件中会看到如下的文字:Process exiting because it reached MaxRequestsPerChild. Signalingthe parent, 这样一来降低了Apache的总体性能。
1. 了解Apache采用的MPM(Multi-Processing Modules,多道处理模块)
MPM是Apache的核心,它的作用是管理网络连接、调度请求。
Apache2.0中MPM分为3种(perfork、worker、event)。
perfork从Apache1.3中继承下来的,它采用的是进程管理模式,所以它可以提供更可靠的性能和更好的兼容性;
worker是Apache2.0中新增加的方式,它采用了线程控制方法,可以比perfork更节约系统开销、处理更多的数据量,但同时兼容性并不是很好,很多旧的程序无法工作在worker下;
event仍处于试验阶段,它为每个任务分配不同的进程池,目前不应该采用。
通过命令httpd –l 可以获取目前Apache采用的是哪种MPM
httpd -l
httpd -V
2.了解perfork的工作方式
查看配置文件httpd-mpm.conf,可以看到perfork的配置端,大致如下:
<IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxRequestWorkers 250 MaxConnectionsPerChild 0 </IfModule>
当Apache被启动时,Apache会自动创建StartServers个进程,并且尽力将空闲进程数保持在MinSpareServers和MaxSpareServers之间。
如果空闲进程小于MinSpareServers,Apache将会以大约每秒1个的速度新建进程。
如果空闲进程小于MaxSpareServers,Apache将会删除额空闲进程,释放服务器资源。
进程数的最大值由MaxClient控制,在Apache1.3中最大只能设置为256,但在Apache2.0中,可以通过在配置开头增加ServerLimit项目来突破256的限制,此时必须MaxClients<=ServerLimit<=20000
MaxRequestsPerChild用来控制每个进程在处理了多少次请求之后自动销毁,这个参数可以设置为0表示无限(即不销毁进程)
3. 优化perfork
对于一个负载相对较高的网站来说,256的进程限制是不够的,如果服务器已经达到256的极限,那么接下来的访问就需要排队,这也就是为什么某些服务器负载不高,但是访问却很慢的原因之一。所以首先应该了解服务器在繁忙时的进程数量。
通过设置ServerLimit和MaxClients来达到为服务器软扩容的目的。
然后,在访问量高峰期,经常会出现的情况是突然之间发生非常多的并发连接,然后突然之间减少了很多访问。如果Apache没有准备足够数量的预备进程,那访问只能等待Apache每秒1个的新增进程,随后又要将多余的进程删除,那Apache只能一直忙于新建和销毁进程,大大地降低了访问速度。可以适当增加StartServers、MinSpareServers、MaxSpareServers来使得Apache不需要一直忙于做无用功。
最后强烈推荐MaxRequestsPerChild不要设置为0,设置为非0,可以保护Apache进程免遭内存泄漏的影响,因为你不知道运行在Apache上的应用程序在什么时候回出错导致内存泄漏。
设置完之后大致是这样的:
<IfModule mpm_prefork_module> StartServers 1000 MinSpareServers 30 MaxSpareServers 30 MaxRequestWorkers 1000 MaxConnectionsPerChild 4000 </IfModule>
1. httpd-mpm.conf配置
Apache的线程数控制文件为httpd-mpm.conf,在conf/extra文件夹下面,要是该配置文件其作用需要在httpd.conf中将#Include conf/extra/httpd-mpm.conf前#去掉,以便httpd-mpm.conf生效。
在windows系统中,其作用的是Winnt mpm段
<IfModule mpm_winnt_module> ThreadsPerChild 150 MaxConnectionsPerChild 0 </IfModule>
windows下如果优化Apache的性能主要是通过专门针对WindowsNT优化的MPM(多路处理模块)-mpm_winnt.c来优化的,它使用一个单独的父进程产生一个单独的子进程,在这个子进程中轮流产生多个线程来处理请求。也就是说mpm_winnt只能启动父子两个进程,不能像Linux下那样同时启动多个进程。
mpm_winnt主要通过ThreadsPerChild和MaxRequestsPerChild两个参数来优化Apache.
ThreadsPerChild
这个参数用于设置每个进程的线程数,子进程在启动时建立这些线程后就不再建立新的线程了。一方面因为mpm_winnt不能启动多个进程,所以这个数值要足够大,以便可以处理可能的请求高峰;另一方面该参数以服务器的响应速度为准的,数目太大的反而会变慢。因此需要综合均衡一个合理的数值。mpm_winnt上的默认值是64,最大值是1920.这里建议设置为100-500之间,服务器性能高的话值大一些,反之值小一些。
MaxRequestsPerChild
该参数表示每个子进程能够处理的最大请求数,即同时间内子进程数目。设置为零表示不限制,mpm_winnt上的默认值就是0.
官方参考手册中不建议设置为0,主要基于两点考虑:
(1) 可以防止(偶然的)内存泄漏无限进行,从而耗尽内存;
(2) 给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。
因此这个参数的值更大程度上取决于服务器的内存,如果内存比较大的话可以设置为0或很大的数字,否则设置一个小的数值。需要说明的是,如果这个值设置的太小的话会造成Apache频繁重启,在日志文件中会看到如下的文字:Process exiting because it reached MaxRequestsPerChild. Signalingthe parent, 这样一来降低了Apache的总体性能。
相关文章推荐
- Apache如何提高并发连接请求数量
- Apache如何提高并发连接请求数量
- 查看Apache并发请求数及其TCP连接状态
- 查看Apache并发请求数及其TCP连接状态
- 查看Apache并发请求数及其TCP连接状态
- Apache并发请求数及其TCP连接状态查看的方法
- apache的mod_limitipconn模块来限制每个IP的并发连接数量
- Apache并发请求数及其TCP连接状态故障排除
- 查看Apache并发请求数及其TCP连接状态[张宴]
- 查看Apache并发请求数及其TCP连接状态
- Apache与浏览器之间的并发,连接,请求
- 查看Apache并发请求数及其TCP连接状态(转)
- 查看Apache并发请求数及其TCP连接状态(http://www.duyu.name/archives/62)
- 查看Apache并发请求数及其TCP连接状态
- 查看Apache并发请求数及其TCP连接状态
- Linux中查看Apache的并发请求数及其TCP连接状态
- 查看Apache并发请求数及其TCP连接状态
- 查看Apache并发请求数及其TCP连接状态及用tcpdump来收集ip的访问量
- 查看Apache并发请求数及其TCP连接状态
- 查看Apache并发请求数及其TCP连接状态