HTTP Server性能调优

本文介绍了IBM HTTP Server的性能优化方法,重点讲述了如何通过httpd.conf文件调整关键参数,包括选择必要的module、配置mpm_winnt.c中的ThreadsPerChild及MaxRequestsPerChild等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IBM HTTP Server 主要是由开源的Apache HTTP Server衍生而来,其相应的性能优化也与Apache的相似。

优化主要是由其{HOME}/conf/httpd.conf文件来进行参数调优。

主要的调优方法有:

1.在httpd.conf只加载需要的module:
在Apache HTTP Server能选择不同功能的module加入配置。这些配置可以是静态也可以是动态共享(DSO)的加入。DOS的模式可以在开始的时候编译也可以使用apxs工具在稍后编译。所以你可以
只加载需要的modules以减少相应的系统开销。

 

2.在httpd.conf中的<IfModule mpm_winnt.c>的配置:
mpm_winnt.c是专门针对Windows NT(Server)优化的MPM(多路处理模块),它使用一个单独的父进程产生一个单独的子进程,在这个子进程中轮流产生多个线程来处理请求。也就是说 mpm_winnt只能启动父子两个进程, 不能像Linux下那样同时启动多个进程。

mpm_winnt主要通过ThreadsPerChild和MaxRequestsPerChild两个参数来优化Apache,下面详细来说明一下。

 

ThreadsPerChild
这个参数用于设置每个进程的线程数, 子进程在启动时建立这些线程后就不再建立新的线程了. 一方面因为mpm_winnt不能启动多个进程, 所以这个数值要足够大,以便可以处理可能的请求高峰; 另一方面该参数以服务器的响应速度为准的, 数目太大的反而会变慢。因此需要综合均衡一个合理的数值。

mpm_winnt上的默认值是64, 最大值是1920. 这里建议设置为100-500之间,服务器性能高的话值大一些,反之值小一些。

 

ThreadLimit
如果需增加Apache的线程数,没有ThreadLimit行,ThreadPerChildd的值超过了1920,线程最大值也只能达到 1920。

 

MaxRequestsPerChild
该参数表示每个子进程能够处理的最大请求数, 即同时间内子进程数目.设置为零表示不限制, mpm_winnt上的默认值就是0.

官方参考手册中不建议设置为0, 主要基于两点考虑: (1) 可以防止(偶然的)内存泄漏无限进行,从而耗尽内存; (2) 给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。

因此这个参数的值更大程度上取决于服务器的内存,如果内存比较大的话可以设置为0或很大的数字,否则设置一个小的数值。需要说明的是,如果这个值设置的太小的话会造成Apache频繁重启,在日志文件中会看到如下的文字:

Process exiting because it reached MaxRequestsPerChild. Signaling the parent

这样一来降低了Apache的总体性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值