windows下优化apache高并发配置

本文介绍了如何在Windows环境下优化Apache服务器以应对高并发场景。通过查看Apache运行模式,确认为mpm_winnt模式,并提供了调整`ThreadsPerChild`和`MaxRequestsPerChild`参数的建议,以平衡性能和资源消耗。推荐的设置为`ThreadsPerChild 250`和`MaxRequestsPerChild 25000`,并警告了设置不当可能导致的内存泄漏和服务器重启问题。

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

公司服务器最近老挂。。(windows+apahce  4G)

看了apache的错误日志

 [mpm_winnt:error] [pid 4044:tid 10164] AH00326: Server ran out of threads to serve requests. Consider raising the ThreadsPerChild setting

1 :如果不确定具体的模式也可以首先查看apache的运行模式,查看命令:httpd -l

Compiled in modules:
  core.c
  mod_win32.c
  mpm_winnt.c
  http_core.c
  mod_so.c
 可以看到运行模式是winnt模式。


2:修改apache 的httpd-mpm.conf 配置

打开 apache2/conf/extra/httpd-mpm.conf ,每个机器可能httpd-mpm.conf 可能不同,这里可以通过find 命令查询。

 

3:以mpm_winnt模块为例说明,mpm_winnt模是专门针对Windows操作系统而优化设计的MPM模块。它只创建一个单独的子进程,并在这个子进程中轮流产生多个线程来处理请求。


对于Windows系统,默认会使用mpm_winnt,即:

  ThreadsPerChild       150
  MaxRequestsPerChild     0

建议的设置:

ThreadsPerChild 250

MaxRequestsPerChild 25000  (建议为前者的100倍)

 

详细补充说明:

 

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


MaxRequestsPerChild
该参数表示每个子进程能够处理的最大请求数, 
即同时间内子进程数目.设置为零表示不限制, mpm_winnt上的默认值就是0.
官方参考手册中不建议设置为0, 主要基于两点考虑:
(1) 
可以防止(偶然的)内存泄漏无限进行,从而耗尽内存;
(2) 
给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。
这个参数的值更大程度上取决于服务器的内存,如果内存比较大的话可以设置为0或很大的数字,否则设置一个小的数值。需要说明的是,如果这个值设置的太小的话会造成Apache频繁重启,在日志文件中会看到如下的文字:
Process exiting because it reached Process exiting because it reached MaxConnectionsPerChild. Signaling the parent to restart a new child process.
这样一来apache就会重启,降低了Apache的总体性能。

甚至严重时候出现错误日志内容 Server ran out of threads to serve requests. Consider raising the ThreadsPerChild setting。这样就会导致重启失败,站点或服务器上的应用无法访问了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值