使用ab测试调整Apache配置降低httpd线程的内存使用率

&">nbsp;   Apache是运行在Linux操作系统上的头号Web服务器。很多小地方都可以用来调整Apache的性能,并降低它对系统资源的影响。其中一个就是调整内存使用率,当然达到这一目的可能还是需要花点功夫的。

  例如,通过ps来确定httpd线程的内存使用率,可以输入下面的命令:

  # ps -U apache -u apache u

  USERPID %CPU %MEMVSZRSS TTYSTAT START TIME COMMAND

  apache130670.05.3 149704 54504 ?SOct071:53 /usr/sbin/httpd -f /etc/httpd/conf/httpd.conf -DAPACHE2

  ...

  上面这段输出显示了单个httpd进程使用了50 MB的RSS(驻留集大小)内存(或者非交换物理内存),以及149 MB的VSZ(虚拟)内存。这当然在很大程度上取决于你在Apache里加载和运行的模块数量。这决不是一个固定的数字。由于这个数字里还包含了共享库包,所以不是100%的准确。我们可以认为RSS数字的一半是httpd线程真正使用的内存数,这可能还有点保守,但是离我们的目的已经非常接近了。

  在本文里,我们假设每个httpd进程都在使用了27 MB内存。然后,你需要确定可以让httpd真正使用的内存数。根据运行在机器上的其他进程,你可能希望要求50%的物理内存都供Apache使用。在一个装有1GB内存的系统上,就有512MB的内存可以被划分为多个27MB的内存,也就是大约19个并发的httpd内存。有些人坚持认为每个httpd线程“真正”使用大约5MB的内存,所以从理论上讲你可以把512MB的内存划分出102个并发进程供Apache使用(要记住的是,除非你的网站需要极其巨大的流量,否则这种情况是非常罕见的)。

  在默认状态下,Apache会分配最大256个并发客户端连接,或者256个进程(每一个都对应一个请求)。按照这种设置,一个流量巨大的网站会在顷刻间崩溃(即使你假设每个进程占用5MB内存,那也需要1.3GB的内存来满足请求的数量)。如果不采取其它措施,系统会通过硬盘来尝试使用交换空间以处理它无法在物理内存中完成的任务。

  其他可以调整的项目包括KeepAlive、KeepAliveTimeout和MaxKeepAliveRequests等设置。可以放在httpd.conf文件里的推荐设置有:

  ServerLimit 128MaxClients 128KeepAlive OnKeepAliveTimeout 2MaxKeepAliveRequests 100

  通过将KeepAliveTimeout从15秒减到2秒,可以增加MaxClients命令;19太小,而128要好得多。通过减少进程存活的秒数,你可以在相同的时间内允许更多的连接。

  当然,如果没有真正的测试在背后支持,数字就是毫无意义的,这就是ab的作用之所在。使用ab对Apache配置文件(MaxClients等于256、ServerLimit等于256、KeepAliveTimeout等于15)进行调整,使其能够满足1000个请求(100个连续请求并发产生)的调整方法如下。(在执行测试的时候要确保服务器上有一个终端打开以观察系统的负载。)

  $ ab -n 1000 -c 100 -k http://yoursite.com/index.php

  现在把上面的服务器设置改为更加保守的设置,重新启动Apache,试着再次测试(总是从远程计算机上进行,而不是本机)。

  在这里的测试中,不同的设置导致执行所消耗的时间产生了一倍的差距(分别为27.8s和16.8s),但是负载的平均值为0.03和0.30。这可能会使得你的网站变得稍慢,但是会确保它不会在高负载的情况下崩溃。还要记住的是,你将需要进行多次测试,以便取得一个平均值。

  使用ab是测试调整Apache配置的一个极佳方法,应该在你每次做出影响性能的更改时使用它。

时间: 2024-11-05 18:43:10

使用ab测试调整Apache配置降低httpd线程的内存使用率的相关文章

使用Apache ab工具对Apache服务器进行简单的压力测试_Linux

1.安裝ab命令 sudo apt-get install apache2-utils 2.ab命令参数说明 Usage: ab [options] [http[s]://]hostname[:port]/path  Options are:      //总的请求数 -n requests Number of requests to perform //一次同时并发的请求数 总的请求数(n)=次数*一次并发数(c) -c concurrency Number of multiple reque

网站图像防盗----Apache配置妙法

apache 每个网站所有者都在尽力美化自己的网站,使它看上去更酷.更具有吸引力,其中最常见的方法就是使用图片.Logo及Flash等.但是,这也会带来一个问题,因为越漂亮.越吸引人的网站,漂亮的图片和Flash等就容易被别的网站悄悄的盗用.下面我们就一起讨论如何防止网站图像被盗用.     需要解决的问题     简单的说,这里有两种不同的盗用行为:    1. 使用HTML标记IMG在自己的网站中引用网站的图片.    2. 从网站上下载图片,然后放在自己的网站上.     对于第一种的盗用

Ubuntu Apache配置以及cgi配置方法_Linux

在学习Python CGI中,需要在Ubuntu下安装Apache,所以今天在Ubuntu11.04上对Apache的安装和配置进行了学习. 一.Apache的安装  在网上查了些资料有两种安装方式:一种是从Apache网站上下载tar文件到自己的电脑上安装:另一种是直接通过网络安装.为了方便我就使用了第二种方式.  Ubuntu提供了强大的apt-get install命令,在终端输入:sudo apt-get install apache2     这样就能方便快捷的安装Apache.但是,

windows2003 apache配置虚拟主机和绑定域名服务_win服务器

本篇文章的方法大概在网上都可以找到解决方法,只是不是很明确,在这为了减少网友像我这么粗心的少走些弯路,我自己写了下一个简单明了的设置过程. 先说下我的服务器的环境: windows 2003 服务器 apache_2.0.48 php4.2 (我们服务器是独立IP,服务器上也没有装IIS,也没有装DNS服务器之类的,所以只能用Apache虚拟主机了) 下面开始说设置步骤:(我这只说基于主机名的虚拟主机一个IP地址,多个网站 的配置过程,如需了解更多,请参考Apache虚拟主机文档) 1.在win

windows2003下apache配置虚拟主机和绑定域名服务_win服务器

本篇文章的方法大概在网上都可以找到解决方法,只是不是很明确,在这为了减少网友像我这么粗心的少走些弯路,我自己写了下一个简单明了的设置过程. 先说下我的服务器的环境: windows 2003 服务器 apache_2.0.48 php4.2 (我们服务器是独立IP,服务器上也没有装IIS,也没有装DNS服务器之类的,所以只能用Apache虚拟主机了) 下面开始说设置步骤:(我这只说基于主机名的虚拟主机一个IP地址,多个网站 的配置过程,如需了解更多,请参考Apache虚拟主机文档) 1.在win

http_load & ab 测试tomcat性能的疑问

问题描述 关于性能测试,有2个疑问一直困惑了好久,哪位牛人给解释下啊测试用tomcat安装后默认的主页面,1.用不同的工具,测试结果不一样,同一工具测试的结果有时也不一样server配置:1核心1G内存,tomcat6maxthreads,acceptCount值为默认值,测试结果如下:maxthreads+acceptCount应该代表了能接受的最大并发访问量,默认为200+100=300按理,应该在300个并发访问的时候,http_load应该不会显示出错才对啊,结果在180个并发时就出现了

分享三种Apache配置虚拟主机的方式_Linux

一.基于IP  1. 假设服务器有个IP地址为192.168.1.10,使用ifconfig在同一个网络接口eth0上绑定3个IP: [root@localhost root]# ifconfig eth0:1 192.168.1.11 [root@localhost root]# ifconfig eth0:2 192.168.1.12 [root@localhost root]# ifconfig eth0:3 192.168.1.13  2. 修改hosts文件,添加三个域名与之一一对应:

Apache配置独立域名的方法_Linux

今天我就详细的说明,如何配置Apache,然后顺便配置本地独立域名.所谓本地独立域名,就是你自定义一个域名,无论什么样的都行,比如:baidu.com,只要你喜欢,任你玩! 那么配置独立域名有什么好处呢?告诉你,我们在本地做程序开发,要同时用很多开源程序.CMS.框架,或者自己写的管理系统,那么给他们每一个都配置一个独立的域名,在测试的时候只要在浏览器输入设置好的域名就可以了,方便大大的! 好了,不说别的了,直接进入正题! 第一步,你要安装Apache软件,就老老实实的一步一步装下去,其中让你填

Nginx+Apache配置环境提高服务器负载

之前流行过一段时间的Nginx+以fastCGI方式运行的PHP来搭建Web站点的方法.但是经过一段时间考量之后,大家经常发现会出现一些502的错误.其实一般是Nginx+fastCGIPHP的形式不太稳定造成.于是尝试了牛人推荐的一种是用Nginx做前端转发PHP请求给Apache的方法来进行服务器平台建设.这种方法有效的避免了Apache在应付大并发时候的些许不足和Nginx配合fastCGIPHP不太稳定的弊端.同时又在一定程度上利用了Nginx速度上的优势.说白了就是一些静态文件有Ngi