Apache参数的优化(转)
按照前面提到的版本问题,Apache可以直接使用2.0版本产品线。针对Apache的优化主要是针对httpd.conf的优化,当然还有其他地方,如果特别留意的话,网上常有专家惊呼“居然这么多人忽略xxxx处的优化”等等,实际情况也确实如此,因为优化的地方实在太多了,httpd.conf只能做一个出发点。即便如此如果仅仅使用httpd.conf出厂默认值的话还是令人痛心不已。
httpd.conf的优化点有以下几处:
1. KeepAlive
我安装的Apache2.0出厂值居然是Off。除非你的网站只有文字没有图片,否则改成On。然后所有的麻烦就来了。
以前看到过一个Web2.0和Web1.0的服务比较图,有印象的就是AdSense是1.0,垃圾Chitika成了2.0,同样Akamai是1.0, BitTorrent成了2.0,真晕。其实Akamai的图片存储服务主要解决服务器的KeepAlive问题。看下面这个sample.html:
Hello world
当浏览器将请求发送给Apache后,Apache会为该用户建立连接,返回/sample.html的内容,浏览器解析HTML文件,发现还需要显示 /hello.gif,就再次向Apache发出请求。这时如果KeepAlive为Off,Apache就需要重新建立连接。试想如果页面请求了 1000个图片,Apache就需要建立1000个连接(但建立第N个时候N-x个连接已经被Apache聪明的关闭了)。如果KeepAlive为 On,Apache会在同一个连接中处理所有这些请求,大大的节省了连接资源,可惜这个世界上有很多攻击者,他们会利用这个连接不断的特性不停的请求文件,耗尽服务器的资源。所以一些大公司像Yahoo、AOL都选用Akamai作为图片存储服务,结果这些公司的sample.html版本就成了这个样子:
Hello world
(真实地图片地址会比这个复杂)
这样一来每次用户访问仅会向本机服务器的Apache请求一次,剩下的请求发送到akamai了。不必为akamai的能力担心,因为它有充足的抗负载技术,Web2.0的大喇叭们想用BT取代akamai,我靠。
2. MaxKeepAliveRequests
明白了1中的内容,这个看名字就知道一个连接可以最多发送多少次请求。默认是500。
3. KeepAliveTimeout
同样,两次请求间超过这个数字就中断这个连接。如果你的KeepAlive是On,MaxKeepAliveRequests是500, KeepAliveTimeout是100,你可以算算攻击者们用多久可以耗干你的Apache。我把KeepAliveTimeout设为5,因为从我网站受众人群的上网速度和网站的图片大小、数量考虑,5秒种可以完成加载多数页面。
4. StartServers
StartServers 的数字表示Apache启动后直接创建的httpd数量。比如你的服务器平时平均需要100个httpd,如果把StartServers设为10就会导致Apache启动之初不停的创建剩下的90个httpd。如果你的服务器平时最多就用20个httpd,把StartServers设为50就浪费了资源。这个参数没什么大不了,因为Apache会自己趋向于适合的httpd服务数。
5. MinSpareServers、MaxSpareServers
保留备用的httpd服务数最小值和最大值。即当不需要这么多httpd服务时,依然最少保留MinSpareServers个服务,但不超过MaxSpareServers个服务。需要根据Apache的运行寻找经验值。
6. ServerLimit,MaxClients
比较重要的一个值。ServerLimit通常应该等于MaxClients。MaxClients决定了最大的httpd进程数,如果攻击者占用了 MaxClients的httpd服务数,你的网站就拒绝正常访问者访问了。但MaxClients的大小受内存的限制,因此Apache2的默认值是 250,并加上了ServerLimit参数作限制,如果想设大MaxClients,必须同时扩大ServerLimit,但ServerLimit不应超过MaxClients。
7. MaxRequestsPerChild
决定了每个httpd服务可以处理的最大请求数,超过这个数字就需要新的httpd服务,后者又由MaxClients限制,环环相套。我的MaxRequestsPerChild是10000。
8. HostnameLookups
设为Off,避免DNS查询的等待。
除了这8个参数外,Apache的另一个可塑点是加载的Module,把不需要的LoadModule注释掉即可,大大的节省了内存。但是问题是你不知道那个Module不需要,即便对照着Apache的Module文档朗读各个Module作用,也只能注释掉很少几个。下面是我比较踏实的注释掉的几个Module:
mime_magic_module、info_module、userdir_module、proxy_module、proxy_ftp_module、proxy_http_module、proxy_connect_module
Apache参数的优化(转)的更多相关文章
- linux 内核参数调整优化网络
Linux系统内核设置优化tcp网络,# vi /etc/sysctl.conf,添加以下内容 net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies.当出现SYN等待 ...
- Apache配置压缩优化时报错——undefined symbol: inflateEnd
Apache配置压缩优化时报错——undefined symbol: inflateEnd 环境:CentOS 6.4 软件版本:httpd-2.4.6 apr-1.4.8 apr-util-1.5. ...
- Tomcat连接参数的优化,主要是针对吞吐量做优化
Tomcat连接参数的优化,主要是针对吞吐量做优化: 修改conf/server.xml文件,把原来 <Connector port="8080" protocol=&quo ...
- NFS网络共享服务 挂载参数及优化 内核优化建议
配置NFS服务端 nfs01上安装软件 [root@nfs01 ~]# yum install nfs-utils rpcbind -y nfs-utils:NFS服务的主程序,包括rpc.nfsd. ...
- Apache配置参数的优化
查看apache开启那些模块: apachectl -t -D DUMP_MODULES 1)KeepAlive On/Off KeepAlive指的是保持连接活跃,换一句话说,如果将KeepAliv ...
- apache性能配置优化
最近在进行apache性能优化设置.在修改apache配置文件之前需要备份原有的配置文件夹conf,这是网站架设的好习惯.以下的apache配置调优均是在red had的环境下进行的. httpd相关 ...
- Linux下Apache服务器并发优化
Linux/UnixLinux系统下Apache 并发数的优化 Apache Http服务器采用prefork或者是worker两种并发控制模式. preforkMPM 使用多个子进程,每个子进程只 ...
- 性能测试 Apache参数配置与性能调优
Apache性能调优 by:授客 QQ:1033553122 环境: Apache 2.4 1.选择合适的MPM(Multi -Processing Modules, 多处理模块) Unix/Linu ...
- Linux+Apache+Mysql+PHP优化技巧
LAMP 平台由四个组件组成,呈分层结构.每一层都提供了整个软件栈的一个关键部分:Linux.Apache.MySQL.PHP. LAMP这个词的由来最早始于德国杂志“c't Magazine”,Mi ...
随机推荐
- mac 删除垃圾篓中的文件
1.打开终端输入: sudo rm -rf /Volumes/kaid/.Trashes/ 2.输入本机密码
- linux快速安装mysql教程
#安装mysql服务器:yum install mysql-server #设置开机启动chkconfig mysqld on#现在启动服务service mysqld start #设置root初始 ...
- 动态RNN和静态RNN区别
调用static_rnn实际上是生成了rnn按时间序列展开之后的图.打开tensorboard你会看到sequence_length个rnn_cell stack在一起,只不过这些cell是share ...
- web性能优化之js图片懒加载
html <div class="container"> <ul> <li> <div id="first" clas ...
- 列表CListCtrl类使用
CListCtrl是列表控件类,列表控件的每一行叫做一个item,每一列叫做一个subitem.每一行和每一列都有个ID号,可以确定唯一的单元格. 最近使用了这个控件,有心得总结如下: (Dialog ...
- JavaScript之MV*模式
前言 在前端技术的快速发展过程中,MVC(模型-视图-控制器).MVP(模型-视图-表示器)和MVVM(模型-视图-视图模型)也得到了很多使用.然而,这三种框架模式非常相似,不易分清,易于混淆.本文重 ...
- 20155225 2016-2017-2 《Java程序设计》第十周学习总结
20155225 2016-2017-2 <Java程序设计>第十周学习总结 教材学习内容总结 22章网络 22.1网络概览 22.2超文本传输协议(HTTP) 22.2.1 HTTP请求 ...
- CVE-2012-4969
Microsoft Internet Explorer ‘CMshtmlEd::Exec’函数释放后使用漏洞(CNNVD-201209-394) Microsoft Internet Explorer ...
- GUC-11 线程池
import java.util.ArrayList; import java.util.List; import java.util.concurrent.Callable; import java ...
- IDEA创建Spring Boot项目
首先安装Spring Boot CLI 先确定自己安装的JDK是1.8版本或者以上,然后下载Srping Boot CLI,Spring Boot CLI下载地址,下载下来是一个压缩包,解压,得到一个 ...