Windows下Apache的优化

摘要:
首选查看apache的工作模式windows下的查看apache的工作模式命令:httpd-l如果列出mod_win32.c,则表示是win32.c工作方式。也就是说mpm_winnt只能启动父子两个进程,不能像Linux下那样同时启动多个进程。mpm_winnt主要通过ThreadsPerChild和MaxRequestsPerChild两个参数来优化Apache,下面详细来说明一下。mpm_winnt上的默认值是64,最大值是1920.这里建议设置为100-500之间,服务器性能高的话值大一些,反之值小一些。
(1)首选查看apache的工作模式
windows下的查看apache的工作模式命令:httpd -l
如果列出mod_win32.c,则表示是 win32.c 工作方式。 列出的全部内容如下所示:
core.c
mod_win32.c
mpm_winnt.c
http_core.c
mod_so.c

mpm_winnt.c是专门针对Windows NT优化的MPM(多路处理模块),它使用一个单独的父进程产生一个单独的子进程,在这个子进程中轮流产生多个线程来处理请求。也就是说mpm_winnt只能启动父子两个进程, 不能像Linux下那样同时启动多个进程。
mpm_winnt主要通过ThreadsPerChild和MaxRequestsPerChild两个参数来优化Apache,下面详细来说明一下。

(2)mod_win32.c工作模式,对应的优化内容如下
在httpd.conf文件中,加入以下内容
<IfModule mpm_winnt.c>
ThreadsPerChild 250
MaxRequestsPerChild 5000
</IfModule>

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

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

MaxRequestsPerChild
该参数表示每个子进程能够处理的最大请求数, 即同时间内子进程数目.设置为零表示不限制, mpm_winnt上的默认值就是0.
官方参考手册中不建议设置为0, 主要基于两点考虑:
(1) 可以防止(偶然的)内存泄漏无限进行,从而耗尽内存;
(2) 给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。

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

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

另外,可以通过查看Apache提供的server-status(状态报告)来验证当前所设置数值是否合理,在httpd.conf文件中做如下设置来打开它:

* # 首先需要加载mod_status模块
LoadModule status_module modules/mod_status.so
* # 然后设置访问的地址
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
# 如果限制某个IP访问则设置为 Allow from 192.168.0.1
Allow from all
</Location>

打开以下地址:http://localhost/server-status,查看apache的运行情况!

免责声明:文章转载自《Windows下Apache的优化》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇TensorFlow利用A3C算法训练智能体玩CartPole游戏jdk8的安装与卸载下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

sparkSQL以JDBC为数据源

一、环境准备 安装oracle后,创建测试表、数据: createtabletest( usernamevarchar2(32)primarykey, passwordvarchar2(32) ); insertintotestvalues('John','1234'); insertintotestvalues('Mike'...

SSL连接出现的问题

客户端向服务器发送数据时,份两种情况,SSL单向验证和SSL双向验证 1.SSL单向验证时 代码如下: Java代码   import java.io.IOException;   import java.util.HashMap;   import java.util.Map;      import org.apache.commons.htt...

linux中查看nginx、apache、php、mysql配置文件路径

linux高效、稳定,但是也带来维护上的一些问题。配置文件究竟在哪里?????       如何在linux中查看nginx、apache、php、mysql配置文件路径了,如果你接收一个别人配置过的环境,但没留下相关文档。这时该怎么判断找到正确的加载文件路径了。可以通过以下来判断1、判断apache 首先执行命令找到httpd路径 ps aux | gr...

apache 2.4 访问权限配置

在apache 2.4里,访问权限配置与2.2不同,如果设置不对,则会报403错误,日志中会报 AH01630: client denied by server configuration。   [Sun Aug 27 19:01:37.591240 2017] [authz_core:error] [pid 16] [client 172.17.0.1:...

lamp安装教程

LAMP环境配置安装注意安装步骤及说明事项。 Linux + apache+mysql+php 附件: 1. 访问ftp报错 解决: 关闭selinux vi /etc/selinux/config 内容修改为: selinux=disable 之后重启reboot。 下图分别为selinux关闭前 和 关闭后: 2. 依赖软件查询 http://rp...

php curl模块开启失败解决参考

  现在公司的测试项目和正式项目是部署在同一台服务器上的,为了在重启apache时互不影响,我在服务器上部署了两个apache服务,使用nginx做url转发。   结果正式环境的项目使用curl没有问题,但是测试环境,也就是新安装的apache服务,使用curl的时候就报错,查看php.ini也发现curl模块已开启,但是使用phpinfo时,看到cur...