apache性能调优(3)

使用ServerLimit和ThreadLimit时要特别当心。如果将ServerLimit和ThreadLimit设置成一个高出实际需要许多的值,将会有过多的共享内存被分配。当设置成超过系统的处理能力,Apache可能无法启动,或者系统将变得不稳定。

Windows系统下Apache 并发数的优化

以上是Linux/Unix下的Apache的并发数优化配置,如果我们打入了httpd –l如下显示:

apache性能调优

怎么办?

ü   步骤一

先修改/path/apache/conf/httpd.conf文件。

httpd.conf

将“#Includeconf/extra/httpd-mpm.conf”前面的 “#” 去掉,保存。

ü   步骤二

再修改/apache安装目录/conf/extra/httpd-mpm.conf文件。

mpm_winnt模式下,Apache不使用prefork也不使用work工作模式,切记!

因此,我们只要找到原文件中:

<IfModule mpm_winnt_module>

    ThreadsPerChild      150

    MaxRequestsPerChild    0

</IfModule>

 

修改后

<IfModule mpm_winnt_module>

    ThreadsPerChild      500

    MaxRequestsPerChild    5000

</IfModule>

 

上述参数解释:

ü   ThreadsPerChild

是指一个进程最多拥有的线程数(Windows版本,貌似不可以开启多个进程),一般100-500就可以,根据服务器的具体性能来决定。

ü   MaxRequestsPerChild

是指一个线程最多可以接受的连接数,默认是0,就是不限制的意思,

0极有可能会导致内存泄露。所以,可以根据实际情况,配置一个比较大的值。Apache会在几个线程之间进行轮询,找到负载最轻的一个线程来接受新的连接。

注意:

修改后,一定不要apacherestart,而是先 apache stop 然后再 apache start才可以。

启用服务端图片压缩

对于静态的html 文件,在apache 可加载mod_deflate.so 模块,把内容压缩后输出,可节约大量的传输带宽。

打开httpd.conf文件,找到:

#LoadModule deflate_module modules/mod_deflate.so

 

将前面的“#”去掉,变成:

LoadModule deflate_module modules/mod_deflate.so

 

然后在最后一行的LoadModule处,加入如下的几行:

<IfModule mod_deflate.c>

 DeflateCompressionLevel 7

 AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php

 AddOutputFilter DEFLATE css js

</IfModule>

 

注意:

默认等级是6,而且9级需要更多的CPU时间,用默认的6级就可以了。

要注意的是,在apache 2.2.15中,我用httpd -l看,居然发现mod_deflat已经内置了,所以其实就不用再在httpd.conf中增加loadmodule了,否则会说出错的

中将MS办公文档自动关联客户端的MS-Office

我们经常会在web页的一个超链接上点一个指向物理文件的文档,我们一般会得到“保存,另存为,打开”,3个选项,当我们打开的如果是一个MS文档,在选“打开”选项时IE会自动启用客户端上装有的word或者是excel等相关MS办公工具去打开,这个怎么做呢?很简单。

打开httpd.conf,找到:

    AddType application/x-compress .Z

    AddType application/x-gzip .gz .tgz

 

在其后敲入一个回车,加入:

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

 

重启Apache服务即可。

防止DDOS攻击

DDOS攻击即采用自动点击机器人或者连续点击工具不断的刷新某一个网址或者网页上的按钮,造成网站在一时间收到大量的HTTP请求,进而阻塞网站正常的HTTP通道甚至造成网站瘫痪。

apache性能调优


为了防止这一形式的攻击,我们一般把在一个按钮或者是一个请求在一秒内连续执行如:100次,可以认为是一种攻击(比如说你打开一个网页,点一下提交按钮,然后按住F5键不松开)。

在Linux下的Apache HttpServer安装后会提供一个mod_evasive20的模块,用于防止这一形式的攻击,它的做法是:

如果认为是一个DDOS攻击,它的防范手段采用如下两种形势:

ü   把这个请求相关联的IP,封锁30分钟

ü   直接把相关的IP踢入黑名单,让其永不翻身

设置:

在你的Apache的httpd.conf文件中的最后一行“LoadModule”加入如下这句:

LoadModule evasive20_module   /usr/lib/httpd/modules/mod_evasive20.so

 

然后加入下面这几行

<IfModule mod_evasive20.c>

DOSHashTableSize 3097

DOSPageCount 15

DOSSiteCount 100

DOSPageInterval 1

DOSSiteInterval 1

DOSBlockingPeriod 36000

DOSEmailNotify 网站超级管理员@xxx.com

DOSLogDir "logs/mod_evasive"

</IfModule>

 

核心参数解释:

ü   DOSHashTableSize3097 记录黑名单的尺寸

ü   DOSPageCount 每个页面被判断为dos攻击的读取次数

ü   DOSSiteCount 每个站点被判断为dos攻击的读取部件(object)的个数

ü   DOSPageInterval 读取页面间隔秒

ü   DOSSiteInterval 读取站点间隔秒

ü   DOSBlockingPeriod 被封时间间隔秒

注意:

上述设置是针对Linux/Unix下的Apache Server,相关的Windows下的Apache见如下设置:

为Windows下的Apache加载mod_evasive模块

1. 下载附件中的压缩包,解压并拷贝mod_dosevasive22.dll到Apache安装目录下的modules目录(当然也可以是其他目录,需要自己修改路径)。

2. 修改Apache的配置文件http.conf。

添加以下内容

LoadModule dosevasive22_module modules/mod_dosevasive22.dll

DOSHashTableSize 3097

DOSPageCount 3

DOSSiteCount 50

DOSPageInterval 1

DOSSiteInterval 1

DOSBlockingPeriod 10

 
中设置URL含中文附件的下载/打开的方法(仅限Linux系统下)

这个话题很有趣,起因是我们在工程中碰到了客户这样的一个需求:

<a href=https://blog.csdn.net/”xxx.xxx.xx/xx/xxx/轮胎损坏情况2007-05-05.jpg”>损坏部件</a>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/cead7c1879539a5ac5b2251ec5d114d8.html