Apache参数的优化

小天天天天    PHP    999+ 次    2018-07-23 11:19:17


针对Apache的优化主要是针对httpd.conf的优化,当然还有其他地方,如果特别留意的话,网上常有专家惊呼“居然这么多人忽略xxxx处的优化”等等,实际情况也确实如此,因为优化的地方实在太多了,httpd.conf只能做一个出发点。即便如此如果仅仅使用

httpd.conf出厂默认值的话还是令人痛心不已。

httpd.conf的优化点有以下几处:

1. KeepAlive

当浏览器将请求发送给Apache后,Apache会为该用户建立连接,返回/sample.html的内容,浏览器解析HTML文件,发现还需要显示 /hello.gif,就再次向Apache发出请求。这时如果KeepAliveOffApache就需要重新建立连接。试想如果页面请求了 1000个图片,

Apache就需要建立1000个连接(但建立第N个时候N-x个连接已经被Apache聪明的关闭了)。如果KeepAliveOnApache会在同一个连接中处理所有这些请求,大大的节省了连接资源,可惜这个世界上有很多攻击者,他们会利用这个连接不断的特性不停的请求文件,耗尽服务器的资源。

2. MaxKeepAliveRequests

明白了1中的内容,这个看名字就知道一个连接可以最多发送多少次请求。默认是500

3. KeepAliveTimeout

同样,两次请求间超过这个数字就中断这个连接。如果你的KeepAliveOnMaxKeepAliveRequests500KeepAliveTimeout100,你可以算算攻击者们用多久可以耗干你的Apache。我把KeepAliveTimeout设为5,因为从网站受众人群的上网速度和网站的图片大小、

数量考虑,5秒种可以完成加载多数页面。

4. StartServers

StartServers 的数字表示Apache启动后直接创建的httpd数量。比如你的服务器平时平均需要100httpd,如果把StartServers设为10就会导致Apache启动之初不停的创建剩下的90httpd。如果你的服务器平时最多就用20httpd,把StartServers设为50就浪费了资

源。这个参数没什么大不了,因为Apache会自己趋向于适合的httpd服务数。

5. MinSpareServersMaxSpareServers

保留备用的httpd服务数最小值和最大值。即当不需要这么多httpd服务时,依然最少保留MinSpareServers个服务,但不超过MaxSpareServers个服务。需要根据Apache的运行寻找经验值。

6. ServerLimitMaxClients

比较重要的一个值。ServerLimit通常应该等于MaxClientsMaxClients决定了最大的httpd进程数,如果攻击者占用了 MaxClientshttpd服务数,你的网站就拒绝正常访问者访问了。但MaxClients的大小受内存的限制,因此Apache2的默认值是 250,并加上了

ServerLimit参数作限制,如果想设大MaxClients,必须同时扩大ServerLimit,但ServerLimit不应超过MaxClients

7. MaxRequestsPerChild

决定了每个httpd服务可以处理的最大请求数,超过这个数字就需要新的httpd服务,后者又由MaxClients限制,环环相套。我的MaxRequestsPerChild10000

8. HostnameLookups

设为Off,避免DNS查询的等待。

除了这8个参数外,Apache的另一个可塑点是加载的Module,把不需要的LoadModule注释掉即可,大大的节省了内存。但是问题是你不知道那个Module不需要,即便对照着ApacheModule文档朗读各个Module作用,也只能注释掉很少几个。下面是我比较踏实的注释掉的几个Module

mime_magic_moduleinfo_moduleuserdir_moduleproxy_moduleproxy_ftp_moduleproxy_http_moduleproxy_connect_module

 

 


如果你觉得本篇文章对您有帮助,请打赏作者

上一篇: git简易的命令行入门教程

下一篇: PHP操作PDO、预处理以及事务

最新评论

暂无评论

热门文章

最新评论

网站数据

网站文章数:481

今日UV/PV/IP:14/17/14

昨日UV/PV/IP:15/19 /15

TOP