Apache连接数设置
来源:服务器技术 发布时间:2007-08-16 13:45:00
prefork几乎还是目前的唯一MPM,我在下面主要还是讨论它的工作原理和相关指令调整。查看缺省生成的httpd.conf配置文件,会发现里面包含如下的配置段:
<IfModule prefork.c>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
prefork的工作原理是这样的:控制进程在最初建立StartServers个子进程后, 为了满足MinSpareServers设置的需要,创建一个进程,等待一秒钟,继续创建第二个,等待一秒钟,继而创建四个,如此按指数级增加创建的进程数,最多达到每秒32个,直到满足MinSpareServers设置的值为止,这也就是预派生(prefork)的由来。这种模式可以使得不必在请求到来时再产生新的进程,从而减小了系统开销以增加性能。
axSpareServers 设置了最大的空闲进程数,如果空闲进程数大于这个值,Apache会自动kill某些多余进程。这个值一般不要设的过大,但如果设的比MinSpareServers小,Apache会自动把它调整为MinSpareServers+1。如果站点负载较大的话,可考虑同时加大MinSpareServers和MaxSpareServers。
MaxRequestsPerChild设置的是每个子进程可以处理的请求数。每个子进程在处理了MaxRequestsPerChild个请求后将自动销毁。0意味着无限,即子进程永不销毁。虽然缺省设为0可以使每个子进程处理更多的请求,但如果设成非零值也有两点重要的好处:
1、可防止意外的内存卸漏;
2、在服务器负载下降的时侯会自动减少子进程数。
因此,可根据服务器的负载来调整这个值,如果非零的话,笔者认为10000左右是比较合适的。事实上这个值对Apache的性能影响不是很大。
MaxClients 是这些指令中最为重要的一个,它设定的就是Apache可以同时处理的请求,这是对Apache性能影响最大的参数.在我个人看来,缺省的150是远远不够的,如果请求总数已达到这个值(可通过ps –ef|grep httpd|wc –l来确认),那么下面的请求就要排队,直到某个已处理请求完毕。这就是为什么系统资源还剩下很多,而http访问却很慢的主要原因。系统管理员可以根据硬件配置和负载情况来动态调整这个值,虽然理论上这个值越大,可以处理的请求就越多,但Apache默认的限制是不能大于256。如果把这个值设为大于256那么Apache将无法起动。事实上,256对于负载稍重的站点也是很不够的。在Apache1.3中这是个硬限制,如果要加大这个值,必须在configure前手工修改源代码树下的src/include/httpd.h,查找256,会发现#define HARD_SERVER_LIMIT 256这行,把256改为你要增大的值如4000,然后重新编译Apache即可。我想这个方法稍有些经验的Apache系统管理员都知道,不过我相信在Apache2.0中知道如何加大这个值的人就不会太多了。
在Apache2.0中新加入了ServerLimit指令,使得无须重编译Apache就可以加大MaxClients。下面是笔者的prefork配置段。
<IfModule prefork.c>
StartServers 10
MinSpareServers 10
MaxSpareServers 15
ServerLimit 2000
MaxClients 1500
MaxRequestsPerChild 10000
</IfModule>
BTW: ServerLimit的最大值是20000,这对于大多数站点是足够了,但如果你一定要再加大的话,那么这个值位于源代码树下的server/mpm/prefork/prefork.c中。里面的
#define DEFAULT_SERVER_LIMIT 256
#define MAX_SERVER_LIMIT 20000
这两行就对应着MaxClients和ServerLimit的限制值。但我相信很少有人可以用到20000的并发连接数。


猜你喜欢
- 在Discuz! 7.0中发布多媒体,比如引用其他网站的视频、mp3 等。需要设置三个地方。首先,对编辑器设置。打开后台,界面=>编辑
- 服务器虚拟化只需要较少的硬件资源就能运行多重应用程序和操作系统,能允许用户根据自身需求快速调配新的资源。但是这些灵活性也导致网络和安全管理者
- Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单
- 为了把握主流社区产品的应用趋势,进一步满足地方及垂直社区门户化发展的应用需求,中国领先的社区平台与服务提供商康盛创想(Comsenz)通过站
- MWC09的新闻你关注吗?自从iphone出来后,手机世界的变化可谓日新月异.移动商务再也不是以前的发发邮件这么简单了.手机已经完全不是以前
- 1.将nginx的压缩包nginx-1.8.0.tar.gz上传到Linux服务器2.由于nginx是C语言开发的并且我们这里是通过编译ng
- 您防范网站被黑的几个步骤?1、对数据库进行安全配置,例如你的程序连接数据库所使用的帐户/口令/权限,如果是浏览新闻的,用只读权限即可可以对不
- 背景:在用jmeter压测接口的时候发现其原生的监控起来不是很友好,在网上查阅的时候发现结合influxDB和grafana,出来的报告很炫
- 上周,微软正式宣布了移动平台新品牌Windows Phone。从Windows Mobile 6.5系统开始,用该品牌取代之前的Window
- 普通集群:多个节点组成的普通集群,消息随机发送到其中一个节点的队列上,其他节点仅保留元数据,各个节点仅有相同的元数据,即队列结构、交换器结构
- 注册表编辑器使用不当可造成严重问题,这些问题可能需要重新安装操作系统。Microsoft 不保证能够解决因为注册表编辑器使用不当而产生的问题
- 无论你是否期待,也无论你支持或者反对,IE9正式版如期发布了。嗯,这一点儿比Mozilla好,Firefox 4正式版不知道要跳票到什么时候
- Overlay网络是指通过在现有网络上叠加一个软件定义的逻辑网络,最大程度的保留原有网络,通过定义其上的逻辑网络,实现业务逻辑,解决原有数据
- Google AdSense英文关键词价格要远远高于中文关键词,初略观察,有实力的同学,做英文站也许是这个经济形式下的一个不错的选择。并不是
- 前置条件容器化spring boot应用所需环境:jdk 1.8 +maven 3.0 +我们的需求是:使用maven打包,将spring
- 本安装及设置教程适用于使用Windows2003为操作系统的服务器,目的是让服务器支持常见网络编程语言包括ASP、PHP、.Net1.1、.
- yum安装卸载命令, yum install 'package_name'yum remove 'package_n
- 知识点:1、FTP使用TCP连接和TCP端口2、在进行通信时,FTP需要建立两个TCP连接:一个用于控制信息,TCP端口号缺省为21一个用于
- glibc是gnu发布的libc库,即c运行库,glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glib
- site语法格式:site : 网址 关键词 或者 关键词 site : 网址注意事项:1、site:后边跟的冒号必须是英文的“:”,中文的