Apache性能优化---全面篇

原创 2012年03月28日 09:09:14

配置网站,要充分的把系统资源利用出去,榨干系统的一切潜能,让网站速度发挥到极致。Apache,是用户浏览和网站数据的一个中间桥梁。但是在这里,我们虽然做得并不是很多,但是如果心细打理,有些设置也会起到立竿见影的效果。

1、安装Apache的时候,要正确选择MPM

要想让Apache的性能最好,那么第一步要做到的是:选择合适的MPM。

Apache有3个MPM,它们分别是:event、prefork和worker。

其中,event这个MPM比较适用于有大量连续连接的情况。KeepAlive的好处是,可 以同一个TCP连接中相应多次请求:这种方式,可以使一个包含大量图片的HTML文档加速50%。在Apahce配置文件httpd.conf中设置 KeepAlive为On,就可以启动KeepAlive。

prefork是一个非线程的MPM,。它的特点是:虽然不是很快,但是很稳定。它能够隔离每 个请求,所以,如果某个请求出现故障,不会影响其它请求。使用prefork最重要的一个参数是MaxClients。这个MaxClients数值要足 够大,这样可以在访问高峰时发挥很好的性能;但是同时又不能太大,致使Apache所需内存超出物理内存的大小。

worker是Apache2版本中新开发的MPM,速度比prefork快很多。而且,由于 使用多线程进行访问处理,所以能够处理相对海量的请求,而系统资源的占用也要小于基于进程的服务器。worker是Apache 2的主要使用方式。worker有两个比较重要的配置参数,那就是:ThreadsPerChild和MaxClients。 ThreadsPerChild用来控制每个子进程允许建立的线程数,ThreadsPerChild用来控制允许建立的总线程数。

那么,这3个MPM要如何选择呢?如果需要更好伸缩性,可以选用worker或event(因 为它们是线程化的MPM);如果需要更加好的稳定性和兼容性(比如要适应一些旧的软件),可以选用prefork。《从prefork到worker:修 改ubuntu apache工作模式》


如果你仍然无法评估自己的需求,仍然不知道应该选择哪个MPM,那么就推荐使用worker。

2、Apache配置优化

在Ubuntu中,Apache主要配置文件是/etc/apache2/apache.conf,以下就针对这个文件来配置。

(1)关闭DNS查询

HostnameLookups在默认情况是已经被设置为off,务必保持该设置。如果需要统计客户端DNS,那么可以使用第三方软件来实现。

(2)优化MaxClients

Apache2启动的时候会创建一些进程(配置文件中的StartServer设定的数目),并保持一个最大的MaxClients数;每一个超过该数目的连接请求,都会排队等待。

这个MaxClients设置,是和MPM相关的。在apache.conf中,既有针对 prefork的MaxClients设置,也有针对worker的。前者在<IfModule mpm_prefork_module>段,后者在<IfModule mpm_worker_module>段。这里以woker为例,原配置为:

<IfModule mpm_worker_module>
StartServers          2
MaxClients          150
MinSpareThreads      25
MaxSpareThreads      75
ThreadsPerChild      25
MaxRequestsPerChild   0
</IfModule>

MaxClients如果要设置超过256的话,就需要同步修改ServerLimit的数值,因为ServerLimit的默认值是256.比如这里需要配置为1024:

<IfModule mpm_worker_module>
StartServers          10
ServerLimit         1024
MaxClients          1024
MinSpareThreads      25
MaxSpareThreads      75
ThreadsPerChild      25
MaxRequestsPerChild   0
</IfModule>

那么,要怎么才能知道是不是需要增大MaxClients呢?可以查看Apache2的错误日志文件/var/log/apache2/error.log,如果发现如下内容,就应该增大MaxClients了:

[error] server reached MaxClients setting,consider raising the MaxClients setting

(3)优化KeepAlive

Apache的KeepAlive这个指令指定一段时间,在这段时间内,可以让服务器和客户端 之间持同一个连接。这个特性,有其好处,也有其坏处。好处是,如果客户端发出多个请求,服务端不必每次都花时间去创建连接。坏处就是,这段时间内,即使客 户端不再发出新的请求、访问新的页面,这个连接也会被占用,这对服务器资源来说是一种浪费。

在默认情况下,KeepAlive是设置为On的,KeepAliveTimeout设置为15秒。也就是说,在15秒之内,服务器平均每秒连接到150个不同的连接,那么从理论上讲,服务器将同时有15×150=2250个连接,内存消耗比较严重。

那么我们要如何来优化KeepAlive呢?

a、可以禁用KeepAlive(设置为 Off);

b、将KeepAliveTimeout改小,比3或者5秒。

(4)启用压缩优化Apache

在 Apache1.3中,有个gzip模块。在Apache2中,没有了gzip,有一个新的模块叫做deflate。这个模块可以在用户访问网站时实时将 内容进行压缩,然后再传给客户端。因为压缩比较高(测试结果显示,其压缩比最高可达97%,最少也有40%),所以deflate能够极大地加速网站,节 约带宽。当然,压缩是要花费CPU时间的。

要启用该模块,运行以下命令:

sudo a2enmod deflate

sudo /etc/init.d/apache2 force-reload

该模块有一个配置文件:/etc/apache2/mods-enabled/deflate.conf,可以配置要压缩的文件类型。默认配置为:

<IfModule mod_deflate.c>

AddOutputFilterByType DEFLATE text/html text/plain text/xml

</IfModule>

上面配置较为合理,因为一般情况下,不需要对图片、PDF和mp3等文件进行压缩,那是很费资源的事情。关于deflate,这里不详细介绍。

(5)禁止apache不必要的日志

Apache写日志是比较消耗资源的,如果没必要存储日志信息,推荐还是关闭此功能。

(6)使用缓存(mod_cache)提高apache性能

apache2有两种缓存模块:一种是基于硬盘的,另外一种是基于内存的。前者由 mod_disk_cache实现,后者由mod_mem_cache实现,不过它们都需要mod_cache的支持。在基于内存的缓存方式中,还有一个 mod_file_cache模块,它是用于搭配mod_mem_cache模块使用的。

之后文章将继续涉及这部分内容,这里就不详细介绍,如有需要,可以参考apache的文档。

3、使用反向代理

通过“反向代理”的方式,可以极大地提高web服务器的相应能力。Squid是一个不错的代理、反向代理服务器,大家可以去了解了解。

通过以上合适的配置,Apache就能够最大限度的挖掘系统资源了!


apache性能配置优化

最近在进行apache性能优化设置。在修改apache配置文件之前需要备份原有的配置文件夹conf,这是网站架设的好习惯。      httpd相关查看命令了解  查看当前安装模块mpm(多路处理器...
  • zouqingfang
  • zouqingfang
  • 2015年07月15日 14:13
  • 9722

apache配置文件详解和优化

[root@localhost conf]# egrep -v "^.*#|^$" httpd.conf ServerRoot "/applications/apache2.2.31" apac...
  • zypzilong
  • zypzilong
  • 2017年09月01日 09:28
  • 669

apache性能配置优化

最近在进行apache性能优化设置。在修改apache配置文件之前需要备份原有的配置文件夹conf,这是网站架设的好习惯。      httpd相关查看命令了解  查看当前安装模块mpm(多路处理器...
  • zouqingfang
  • zouqingfang
  • 2015年07月15日 14:13
  • 9722

apache2优化配置总结

apache2优化配置总结
  • atvance016
  • atvance016
  • 2015年01月25日 19:38
  • 780

Apache性能优化之MPM选择和配置

截止到目前最新的Apache2.4.25,Apache总共支持三种MPM(多进程处理模块)模式,分别是Prefork、worker及event。这三种模式代表了Apache的演变和发展。 Apache...
  • ccscu
  • ccscu
  • 2017年04月15日 16:22
  • 2183

apache性能调优

性能测试简介 即压力测试,就是根据一定数量的VU(Virtual Users)我称为并发用户操作核心交易后,系统所能达到的最大瓶劲,以便于发现系统的极限、有没有Outof memory这样的问题...
  • hytfly
  • hytfly
  • 2013年12月09日 23:06
  • 12130

apache+php+mysql慢的处理方法之一( apache并发数调整)

从配置完服务器之后,一直慢得我想死,昨天突然我想到是不是并发数的原因,刚才我修改了一个并发数,   apache并发数调整 手头有一个网站在线人数增多,访问时很慢。初步认为是服务器资...
  • jaray
  • jaray
  • 2013年08月15日 17:41
  • 6839

Apache 高并发 性能优化

Apache的配置是针对原先较低的服务器来配置的,原先的配置显然已经不适合了,所以今天开始研究下Apache配置的问题。 1. 首先要了解Apache采用的MPM(Multi -Processing ...
  • yishouwangnian
  • yishouwangnian
  • 2016年09月26日 11:35
  • 3866

Web服务器Nginx多方位优化策略

Nginx(读音engine x)服务器由于性能优秀稳定、配置简单以及跨平台,被越来越多的公司和个人所采用,现已成为市场份额继Apache之后的第二大Web服务器。各大小网站论坛博客也介绍说明了Ngi...
  • dongsong1117
  • dongsong1117
  • 2015年04月30日 10:27
  • 848

apache服务器的优化

apache服务器的最大并发数主要与服务器的CPU、内存、带宽、以及网站的一些服务如mysql等都有关系。 1、文件句柄 在Linux下编写网络服务器程序的朋友肯定都知道每一个tcp连接都要占一个文...
  • birdfly_
  • birdfly_
  • 2017年03月11日 20:19
  • 357
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Apache性能优化---全面篇
举报原因:
原因补充:

(最多只允许输入30个字)