第三篇、调优之路 Apache调优

时间:2021-09-09 02:36:45

1.  简介

在第一篇中整合了apache + tomcat ,利用了apache解析静态文件为tomcat解压。但是在测试机上发现两者性能不足,不能充分利用服务器的性能,该篇中将对apache进行性能上调优 。

这里的调优针对的是window 平台下 ,linux下apache的调优后续再说.

2. apache调优

2.1 移除不用的模块

apache的功能相当强大,但不是在每个项目中都能用到其所有的功能,其中加载了一些我们通常用不到的模块,这其实是没有必要的 。

去除不用的模块方法很简单,通过#来注释httpd.conf文件下加载的模块,切记在注释加载模块一个一定一定要Test Configuration 一下,否则到时候出差错了都不知道从哪里下手了.通常去掉

的模块有:  mod_include.so 、mod_autoindex.so等 ,可自行尝试。当然在性能运行的情况下,不执行该操作.

2.2  设置线程参数

在httpd.conf配置中找到 #LoadModule vhost_alias_module modules/mod_vhost_alias.so 在后面加入:

<IfModule mpm_winnt_module>
ThreadsPerChild 300
MaxRequestsPerChild
</IfModule>

★ ThreadsPerChild   一个进程最多拥有的线程数  range[100-500]

★ MaxRequestsPerChild 一个线程最多可接受的连接数,默认为0 可能会导致内存泄漏,Apache存在轮询机制,会自动调节

2.3  启动Apache输出压缩

加载mod_deflate.so模块,去掉#

LoadModule deflate_module modules/mod_deflate.so

然后在<IfModule mpm_winnt_module>...</IfModule> 后面追加如下配置:

<IfModule mod_deflate.c>
DeflateCompressionLevel
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php
AddOutputFilter DEFLATE js css
</IfModule>

2.4   安全之Deny

通过Deny来禁止若干文件的访问(提高安全性) ,其用法如下:

第三篇、调优之路 Apache调优

2.5    安全之防止dos攻击

存在mod_dosevasive22.dll 可防止网络上页面进行dos攻击(例如:机器人不断刷新指定网页,不断访问)。 下载该dll文件后放置在modules ,修改httpd.conf文件

在文件尾追加如下文件:

  

LoadModule dosevasive22_module modules/mod_dosevasive22.dll
DOSHashTableSize
DOSPageCount
DOSSiteCount
DOSPageInterval
DOSSiteInterval
DOSBlockingPeriod

其中:

★ DOSHashTableSize 3000 黑名单总数

★ DOSPageCount  页面被攻击次数为该值时会判断为dos攻击

★ DOSSiteCount  站点被攻击次数为该值时会判断为dos攻击

★ DOSPageInterval  读取页面间隔

★ DOSSiteInterval  读取站点间隔

★ DOSBlockingPeriod  访问IP被封时间间隔

时间单位为秒

配置完成以后关闭apache 然后启动

   启动第一篇中配置的tomcat,访问http://localhost/WebDemo/ 得到

第三篇、调优之路 Apache调优

按住F5不停刷新页面,得到

第三篇、调优之路 Apache调优

10秒后可继续访问。

2.6 修改默认配置参数

在httpd.conf中搜索httpd-default.conf ,放开对其配置

Include conf/extra/httpd-default.conf

在该文件中存在了对apache的默认配置参数

#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout #
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive On

先说KeepAlive: 表示用户请求完成后是否需要维持一个TCP连接  ;

on  :表示请求完成时保持一个与服务器的TCP连接,如果还有请求,则在该连接中完成,无需重复建立连接,维持的时候为上面设置的Timeout时间(毫秒)

off  : 表示请求完成以后立即关闭连接

两者差异 :

    on :需要消耗更多的内存,但是提高访问速度,在页面中js,css,img图片较多的时候建议开启

off :对内存消耗少,在页面每次由app server动态生成时,建议设置为off

#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests #
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout
   MaxKeepAliveRequests 不要设置为0 (0为不限制),容易导致内存异常 .服务器性能较高可适当调整,建议保持默认

注释AccessFileName 
#AccessFileName .htaccess
 ServerSignature 设置为off 可防止服务器广播敏感信息 默认为on 

 HostnameLookups 设置为on 可减少DNS查询次数 .

2.7 监听端口

默认情况下 apache 监听为80 端口,在实际中最好是指定监听具体的应用对应的 ip地址:80  即:

Listen  xxx.xxx.xxx(具体的ip) :

因为服务器可能拥有多个ip地址,这样会倒置安全性降低 。这种情况应该很少见

2.8 关联计算机Office软件

在应用中经常要打开或者下载附件,例如word ,excel 等 可通过一下设置关键到本地的Office软件来打开

在 AddType application/x-gzip .gz .tgz  后追加

AddType application/vnd.openxmlformats  docx pptx xlsx doc xls ppt txt

2.9  清除注释

这是最简单的操作,没有技术含量,将httpd.conf文件中所有的注释信息全部删掉 ,保持一个“纯洁”的配置.  嘿嘿...

此篇到此结束!

备注:性能优化要通过实际操作来校验的,不能想当然... 那啥来着 实践是检验真理的唯一标准...