按照前面提到的版本问题,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参数的优化(转)的更多相关文章

  1. linux 内核参数调整优化网络

    Linux系统内核设置优化tcp网络,# vi /etc/sysctl.conf,添加以下内容 net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies.当出现SYN等待 ...

  2. Apache配置压缩优化时报错——undefined symbol: inflateEnd

    Apache配置压缩优化时报错——undefined symbol: inflateEnd 环境:CentOS 6.4 软件版本:httpd-2.4.6 apr-1.4.8 apr-util-1.5. ...

  3. Tomcat连接参数的优化,主要是针对吞吐量做优化

    Tomcat连接参数的优化,主要是针对吞吐量做优化: 修改conf/server.xml文件,把原来 <Connector port="8080" protocol=&quo ...

  4. NFS网络共享服务 挂载参数及优化 内核优化建议

    配置NFS服务端 nfs01上安装软件 [root@nfs01 ~]# yum install nfs-utils rpcbind -y nfs-utils:NFS服务的主程序,包括rpc.nfsd. ...

  5. Apache配置参数的优化

    查看apache开启那些模块: apachectl -t -D DUMP_MODULES 1)KeepAlive On/Off KeepAlive指的是保持连接活跃,换一句话说,如果将KeepAliv ...

  6. apache性能配置优化

    最近在进行apache性能优化设置.在修改apache配置文件之前需要备份原有的配置文件夹conf,这是网站架设的好习惯.以下的apache配置调优均是在red had的环境下进行的. httpd相关 ...

  7. Linux下Apache服务器并发优化

     Linux/UnixLinux系统下Apache 并发数的优化 Apache Http服务器采用prefork或者是worker两种并发控制模式. preforkMPM 使用多个子进程,每个子进程只 ...

  8. 性能测试 Apache参数配置与性能调优

    Apache性能调优 by:授客 QQ:1033553122 环境: Apache 2.4 1.选择合适的MPM(Multi -Processing Modules, 多处理模块) Unix/Linu ...

  9. Linux+Apache+Mysql+PHP优化技巧

    LAMP 平台由四个组件组成,呈分层结构.每一层都提供了整个软件栈的一个关键部分:Linux.Apache.MySQL.PHP. LAMP这个词的由来最早始于德国杂志“c't Magazine”,Mi ...

随机推荐

  1. PHP SPL使用方法 自动加载和迭代器

    SPL,PHP 标准库(Standard PHP Library) ,此从 PHP 5.0 起内置的组件和接口,并且从 PHP5.3 已逐渐的成熟.SPL 其实在所有的 PHP5 开发环境中被内置,同 ...

  2. IntelliJ IDEA + Maven + Tomcat 本地开发、部署、调试。

    1.maven 下载 解压 配置下 远程仓库( 用阿里云的 比较快).本地仓库 (可以本地C盘建立个文件夹当仓库).环境变量(方便使用maven命令)就可以了. 2.tomcat 下载 解压 配置下 ...

  3. B树 B+树 红黑树

    B-Tree(B树) 具体讲解之前,有一点,再次强调下:B-树,即为B树.因为B树的原英文名称为B-tree,而国内很多人喜欢把B-tree译作B-树,其实,这是个非常不好的直译,很容易让人产生误解. ...

  4. SQLServer判断指定列的默认值是否存在,并修改默认值

    SQLServer判断指定列的默认值是否存在,并修改默认值 2008年10月21日 星期二 下午 12:08 if exists(select A.name as DefaultName,B.name ...

  5. SQl查询数据库库名,表名、表的列名

    查询数据库 select * From master.dbo.sysdatabases where name='数据库名' and status<>512   --读取库中的所有表名 (当 ...

  6. sicily 1051. Biker's Trip Odomete

    DescriptionMost bicycle speedometers work by using a Hall Effect sensor fastened to the front fork o ...

  7. 在Ubuntu 16.04 安装python3.6 环境并设置为默认

    在Ubuntu 16.04 安装python3.6 环境并设置为默认 1.添加python3.6安装包,并且安装 sudo apt-get install software-properties-co ...

  8. Django实战(3):Django也可以有scaffold

    rails有一个无用的”神奇“功能,叫做scaffold.能够在model基础上,自动生成CRUD的界面. 说它无用,是因为rails的开发者David说,scaffold”不是应用程序开发的目的.它 ...

  9. 005 Ajax中使用jquery实现三种格式的信息

    1.jquery中的ajax 二:load 2.load方法 3.load测试程序大纲 4.load测试程序 <!DOCTYPE html> <html> <head&g ...

  10. 2011年入侵 Kernel.org 的黑客被捕 面临10年监禁

    2011年中旬,Linux内核官网kernel.org遭到黑客入侵,攻击者植入了rootkit Phalanx,并在服务器上设置了SSH后门,kernel.org为此关闭了三周多时间.官方表示将会公开 ...