sql性能优化,Apache性能优化

Tunning Apache
Apache几目前Internet上使用最为广泛的Web服务器。它具有比商业Web服务器不遑多让的功能与速度,同时安装与设置也十分简单,正是这些特性让它成为市场占有率最高的Web服务器软件。不过Apache安装简单,并不意味着简单地安装就可以适用于绝大多数应用环境,在高负荷的Web站点,Apache还需要进行调整、优化......
优化方法
Apache的配置文件是httpd.conf。Windows下该文件位于Apache安装目录的Conf子目录下,RedHat Enterprise Linux AS 3.0 Update 2位于/etc/httpd/conf。通过调整该文件的某些参数,可以优化Apache的运行效率。
为了验证后文Apache参数的调整是否起作用,我们通常用Apache附带的ab(Apache Bench)对其进行压力测试。
ab最常用的语法格式是这样的:
ab -n XXX -c YYY -k http://hostname.port/path/filename
其中:
-n XXX:
表示最多进行XXX次测试。也就是下载filename文件XXX次。
-c YYY:
客户端并发连接个数。
-k:
启用HTTP KeepAlive功能。默认不启用KeepAlive功能。
比如我们要对http://hostname:port/file.com下载10000次进行测试,并发访问为60个,启用HTTP KeepAlive功能,则访问指令为:
ab -n 10000 -c 60 -k http://hostname:port/file.htm
测试平台
在本次优化过程中。笔者采用了两台电脑进行压力测试。其中一台为客户端,运行ab发送请求,另外一台为服务器,安装有Apache提供Web服务。
1.服务器配置
服务器端,笔者采用了较低端的配置。这样更容易通过ab测试看来调整参数后的效果:
CPU: Intel Celeron 1.0GHz
内存: 512MB SRAM 100MHz
硬盘: Maxtor 4D040H2
网卡: D-Link DFE 530TX
服务器端笔者安装两种操作系统:Windows Server 2003 Enterprise Edition并升级到最新的Hotfix。Apache服务器版本为2.0.50;或者RedHat Enterprise Linux AS 3.0 Update 2。
2.客户端配置
为了使评测的瓶颈不在客户端,笔者客户端配置要比服务器端好,具体硬件配置如下:
CPU: P4 3.0GHz 533MHz 打开了HT支持
内存: 512MB DDR 400
硬盘: WD1200JB-00CRA1
网卡: D-Link DFE 530TX
客户端安装有RedHat Enterprise Linux AS 3.0 Update 2。并利用其中的ab来进行性能测试。
通用优化技巧
对于Apache服务器来说,为了提高性能需要进行的某些参数调整具有通用性,也就是说只要采用了就可以使其性能更好。
1.关闭DNS和名字解析
* HostnameLookups _disibledevent=>
Linux下进程级的Apache调整参数包括以下五个。
* StartServers
该参数决定Linux启动时,自动打开的Apache服务器的数目。它对Apache服务器的性能没有太大的影响。因为如果MinSpareServers设置的比较大,Apache服务器进程数会马上调整到不小于MinSpareServers的数目。
在Linux下,我们可以通过:
ps aux |grep httpd
来查看当前打开的Apache服务进程数。
* MinspareServers
该参数用于配置在任何时候可用的最小Apache进程个数。一般情况下,当目前可用的Apache进程数不能满足需求时,Apache会自动打开新进程以服务客户。所以设置MinspareServers为较大的值只是为了让在比较繁忙的Web环境,让Apache可以尽快地满足客户端的访问需求。对于每天有百万访问量的网站来说,下面的数值是比较合适的:
MinspareServers 32
* MaxSpareServers
较大的MinSpareServers可以保证Apache有较快的反应速度,过大的MinSpareServers又会占用更多的系统内存。如果你的系统内存不是很充足或者运行有其他的服务,把MaxSpareServers设置小一些可以为其他服务空出一些内存。当空闲Apache进程超过MaxSpareServers指定的数值时,Apache主进程会杀掉多余的空闲进程而保持空闲进程在MaxSpareServers指定的数值。
对于每天百万访问量的网站来说,配置大容量的内容,并且设置如下的值是比较合适的:
MaxSpareServers 64
* MaxClients
服务器的处理能力毕竟是有限的,不可能同时处理无限多的连接请求。参数MaxClients就用于规定服务器支持的最多并发访问的客户数。
如果MaxClients设置得过大,系统在繁忙时不得不在过多的进程之间来回切换为更多的客户服务。这样对每个客户的反应就会变慢;如果设置得过小,系统繁忙时就会拒绝客户连接请求。
我们的设想原则是,当服务器性能较高时,可以适当增加这个值的设置。如果繁忙出现拒绝访问现象,说明需要升级服务器硬件了。
如果你不在意访问速度,或者认为反应速度慢也总比拒绝连接好,可以把该值设置大一些。
* MaxRequestsPerChild
当设置KeepAlive为off时,Apache服务器是用单独的子进程为一次连接服务,这样,每次连接都需要生成、关闭子进程,这些额外的操作浪费了计算机的大量处理能力。最好的方式是一个子进程可以为多次连接请求服务。
但子进程在接受访问请求时,需要不断地申请和释放内存,次数多了就会造成内存垃圾,影响系统稳定性。为了解决这个问题,可以规定每一个子进程处理的最大请求数,超过此数值,就让该子进程退出,再从原始的httpd进程中重新复制一个干净的副本,从而提高系统的稳定性。
第个子进程能够处理服务请求的最大次数由MaxRequestsPerChild定义。RedHat Enterprise Linux AS 3.0 Update 2缺省的设置值为1000这个值比较适合(设置为0支持每个副本进行无限次的服务处理)。
在我们的测试过程中发现,RedHat Enterprise Linux AS 3.0 Update 2下默认配置的Apache并不能很好地应付大负荷站点。我们需要打开KeepAlive,并加大StartServers、MinSpareServers、MaxSpareServers和MaxClients的数值。这些参数对于Apache性能的改善有很大的影响。
小知识:
RedHat Enterprise Linux AS 3.0 Update 2最大MaxClients只能设置到256。如果你需要设置其为更高,需要在MaxClients前面添加:
ServerLimit xxx
其中xxx不能少于MaxClients的数值。该设置方法适用于Apache 2.0系列。
2.Windows下Apache优化
Windows下,Apache 2.0经过了全新的设计,采用多线程的方式(work)运行。这种运行方式,理论上比Linux/UNIX的Perfork运行模式有更好的性能。
Work模式下由单个控制进程负责子进程的建立。每个子进程可以建立由ThreadsPerChild指定的固定数量的线程。由独立的线程监听并处理到来的连接。
在Windows下可以执行“Apache -l”。查看当前工作模式,如果显示“mpm_winnt.c”,则表示Apache工作在多线程模式下;在Linux下执行“httpd -l”看到“prefork.c”表示工作在子进程模式下。
其配置语句是:
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
Apache力图维持一个备用的服务线程池,让客户端无须等待线程/进程的建立即可得到处理。最初建立的进程数由StartServers指定。然后Apache会不停地检测所有Apache进程中空闲线程的总数,并新建或结束进程使总数维持在MinSpareThreads和MaxSpareThreads所指定的范围以内。但同时可以得到处理的客户端的最大数量又取决于MaxClients指令,而进程建立的最大数量取决于ServerLimit指令。三者之间的关系为:
ServerLimit*ThreadsPerChild >=MaxClients
具体参数和优化方法这里由于篇幅所限,不再具体介绍。有兴趣的朋友可以参考前文介绍的Linux下的优化进行。
Tags:  性能优化方案 为提高性能而优化 电脑性能优化 性能优化 sql性能优化

延伸阅读

最新评论

发表评论