Apache 并发优化设置方法_Linux

Apache优化步骤:

1、先查看apache的运行模式,查看命令:

httpd -l

Compiled in modules:
           core.c
           prefork.c
           http_core.c
           mod_so.c
        这里可以看到运行模式是prefork模式。

2、修改apache 的httpd.conf 配置

本文是对512M 内存并装有apache的vps进行优化,请不要跟我说装nginx就强多了,确实如此,但是你这样说的话,这篇文章就没什么意义了,哈哈。那么进入正题吧!

操作系统(linux):CentOS 5.5 32位(并不是我说这个比较好,只是Cents我用得比较熟练)

    内存:512M
    cpu:1G(1000MHz,vps实际有没有这个数,很难说)
    apache:2.2(建议低版本的,升级到高版本,毕竟旧版有很多问题,且性能也是高版本好点)

运行的主要是PHP程序,其他的不多说了,与本文关系不大。

首先,如题所说,本文所说的优化是针对apache 2.2以上版本,及使用perfork MPM模式的。perfork是apache在linux下默认安装下的模式,如果使用apache作为服务器的放在,还是使用perfork模式比较好,worker模式下对php某些功能并不支持。如果你使用的是win系统或都没有使有和perfork,那么下面可以选择不看或抱着学习的态度看看咯。

以下内容均属于博主自己的见解,实际测试请根据你的服务器,程序及其他因素按需处理。

一般情况下,我们需要优化apache就是因为apache占用大量的内存,导致vps当机,因为perfork是多进程处理的,每个进程都会点用一定的内存数量。所以限制httpd进程的数量,从而达到优化apache的作用。影响单个httpd进程的内存大小,主要都是加载模块,至少什么模块是合适的,我也很难说,因为这个是按由你的需要而定的。网上有些人说,绝大部分都会用不上的模块列出来,我认为这个是有很大的误导作用,因为绝大部分人中,也许你就是其中一个。将有用的模块屏蔽掉,最坏的情况,就是重启apache出错,或部分功能无法使用。所以我也不会列出什么最少模块加载方案什么的。所以,我只会说出一些参考。

apache(perfork)下的模块加载,并不是模块加载列表,没有的模块并不是屏蔽掉了,只是我也不清楚它的实际作用。

(一)、对于apache2.2,模块名有cache的一般都是有用的,因为有不少的这类模板都是2.1以上的apache才支持的,所以这类的模块不会是无缘无缘而存在的。

(二)、很有可能或必用到的模块有:

复制代码 代码如下:

LoadModule auth_basic_module modules/mod_auth_basic.so
  LoadModule authn_file_module modules/mod_authn_file.so
  LoadModule include_module modules/mod_include.so
  LoadModule log_config_module modules/mod_log_config.so
  LoadModule expires_module modules/mod_expires.so
  LoadModule deflate_module modules/mod_deflate.so
  LoadModule headers_module modules/mod_headers.so
  LoadModule setenvif_module modules/mod_setenvif.so
  LoadModule mime_module modules/mod_mime.so
  LoadModule autoindex_module modules/mod_autoindex.so
  LoadModule negotiation_module modules/mod_negotiation.so
  LoadModule dir_module modules/mod_dir.so
  LoadModule alias_module modules/mod_alias.so
  LoadModule rewrite_module modules/mod_rewrite.so

(三)、我粗略点了一下apache里面的模块约在50+以,要从中选择人人都适用的模块加载列表是不可能的,至少cgi模块我是不会用,但不排除你不会用。

模块加载这一块就说到这里,这个大家多百度,多用自然会识别出一些有用模块并渐渐屏蔽不使用的模块。

接下来,就是最为重要的perfork配置,也是困扰了我很久的问题,尽管参数就那么6个,那是却足以让你的vps当机。先列出需要修改的参数,修改位于httpd.conf的文件里面

复制代码 代码如下:

Timeout 30
KeepAlive On
MaxKeepAliveRequests 80
KeepAliveTimeout 15
<IfModule prefork.c>
ServerLimit 150
StartServers      5
MinSpareServers   5
MaxSpareServers   10
MaxClients       150
MaxRequestsPerChild 4000
</IfModule>

上面的代码就是要修改的,实际上我们是要修改perfork里在的参数,之所以将Timeout,KeepAlive等也写出来,是因为这个也是影响apache性能的。

Timeout是一个连接多少时间后断开,这个参数设置在30-60是一般的php程序都是适用的,至少要运行一些要占用大量时间的php程序,那么适当调高也是可以的,但请不要太高,否则会影响apache性能,本次优化我们使用30就很足够了。

MaxKeepAliveRequests 是一个连接最大的请求量,对于页面有较多的图片等元素,可以适当调高一点,对于一般的网页设置在80-120是足够的,我们就设置为100,如果设置太高会导致httpd长时间不能退出释放内存的。

KeepAliveTimeout 是当用户处理一次连接时,如果在该参数的时间内还有请求则会继续执行,不需要重新创建新的连接,直到达到MaxKeepAliveRequests的最大值才会退出。对于perfork模式下的,有人认为是将KeepAlive Off会比较好,但是对于绝大多数的网站都会不多不少有些图片元素,所以将该项打开,并将KeepTimeOut设置在2-5秒,不但有效提高服务器性能,也能加快页面打开速度。

接下来,就是正式进入perfork的参数设置了,不想服务器运行一会就内存占满的得看看哦。

首先是参数ServerLimit就是服务器最大支持同时连接的客户端,该值将决定下面参数MaxClient可以设定的值的范围。ServerLimit实际上只是起到一个限制的作用,并没有实际有作用,也许有,我就不知道了。实际上起到作用的是,MaxClient参数,但这个值又受ServerLimit的限制,等下会讲。

另三个参数StartServers,MinSpareServers,MaxSpareServers,为什么将这三个参数一起说呢,因为这三个数是联系在一起的。这三个数都是决定空闲进程数量,StartServers应该范围就是MinSpareServers和MaxSpareServers之间。否则,apache会自动将该值还原到两都之间,所以不要浪费不必要的资源。按照perfork默认的配置,这三个参数分别为:5,5,10。但是对于只有512M内存的vps来说,我认为还是有过大的负载。因此,我认为在这里应该退一步,将这三个参数设置为4,4,10,看起来和上面5,5,10并没有什么不同,最大值还是10,但在实际使用中4,4,10释放的内存速度会明显比5,5,10快很多。

接下来就是MaxClient最大支持多少客户端在同一时间连接服务器,简单说就是最大并发数支持,这个没有特别需要说的。对于512M的vps你也别想你的站能承受百万PV,使用默认的150已是超出负载的了。一般将ServerLimit和MaxClient设为一样值即可。

最后就是MaxRequestsPerChild参数,一个进程在处理多少次之后退出,设置为0则是无限次,也就是说不会退出,那么httpd进程也不会退出。那么,你就等着你的vps当机重启去吧。对于这个参数,我粗略地搜索了一下,不少人推荐在1000次,也有100次的。据我的测试,对于内存只有512M的vps来说,该值设置在500以上都会很快占满内存,但不至少于当机。而观察得知,一但内存占满,cpu的使用率几乎变为0了。由此可知,当机了那什么都干不了了,还不如消耗多一点cpu资源避免,提高稳定性。所以,我最后的决定是将该值定义在30-40之间。这样设定后,可以看出,内存释放速度得到很大的提升,但也可以看到cpu也在频繁上下跳动。这样设置,即使内存占满,也能在最短时间恢复正常。

所以对于512MB的vps,apache(perfork模式)最后的优方配置为:

复制代码 代码如下:

Timeout 30
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 2
<IfModule prefork.c>
ServerLimit 150
StartServers      4
MinSpareServers   4
MaxSpareServers   10
MaxClients       150
MaxRequestsPerChild 40
</IfModule>

这样,我们的配置基本完成,进行负载测试即可。负载测试,我们使用ab测试,先声明一点,是用你本地的虚拟机去测试服务器上的一个静态页面,而不是在服务器上测试。之前,我就是这样做,因为网速一样,效果都是比较好的,但别人都是不同网速的,所以服务器上测试是不准确的。

3、现在看看需要怎么优化:
      连接数理论上是越大越好,但是得根据硬件,服务器的CPU,内存,带宽等因素,查看当前的apache连接数:
     

ps aux | grep httpd | wc -l

      计算httpd 占用内存的平均数:
     

ps aux | grep -v grep |awk '/httpd/{sum += $6;n++};END{print sum/n}'

      这个只是做个参考。计算后要减去服务器系统本身所需要的资源。
      比如内存2G,减去500M留给服务器,还有1.5G,那么可得到最大连接数:在8000左右。
      根据情况修改后的httpd.conf的prefork的配置后为:
   

复制代码 代码如下:

<IfModule prefork.c>
     StartServers          5
     MinSpareServers       5
     MaxSpareServers      10
     ServerLimit         5500
     MaxClients          5000
     MaxRequestsPerChild   100
</IfModule>

这里重点介绍下ServerLimit,必须放到MaxClients前,值要大于MaxClients。

4 重启apache,再打开网站看看是否还会有慢的问题了。

附注:可以使用以下命令找到httpd.conf文件

find / -name httpd.conf

时间: 2024-10-24 13:05:43

Apache 并发优化设置方法_Linux的相关文章

谈谈动态、静态、伪静态三种网址模式的优化设置方法

摘要: 对于网站的网址而言,常见的网址模式主要分为三种:动态.静态.伪静态.而相应的每种网址模式又对应着相应的页面类型,就是咱们常说的静态页.动态页.伪静态页.当然在网站 对于网站的网址而言,常见的网址模式主要分为三种:动态.静态.伪静态.而相应的每种网址模式又对应着相应的页面类型,就是咱们常说的静态页.动态页.伪静态页.当然在网站优化中,站长都知道,其中静态模式的网址对于优化和用户体验都非常有帮助的,同时对于提高自己的网站知名度也是相当不错的.但是并非所有的网站都使用静态模式的网址就合适,就如

正确配置与维护Apache安全性设置方法_Linux

一,Apache服务器的介绍 Apache服务器它是Internet网上应用最为广泛的Web服务器软件之一.Apache服务器源自美国国家超级技术计算应用中心(NCSA)的 Web服务器项目中.目前已在互联网中占据了领导地位.Apache服务器得经过精心配置之后,才能使它适应高负荷,大吞吐量的互联网工作.快速.可靠.通过简单的API扩展,Perl/Python解释器可被编译到服务器中,且完全免费,完全源代码开放.如果你需要创建一个每天有数百万人访问的Web服务器,Apache可能是最佳选择. 二

浅谈主导航、次导航和底部导航的优化设置方法

导航是网站的指南针,是用户快速寻找所需信息的快捷入口.一个网站中能否留住用户,首先看导航的设置是否符合用户浏览习惯及是否足够的清晰,让用户一目了然的了解全网站相关内容.当然在网站优化中,导航同样占据着不可忽视的作用.一个导航是否利于蜘蛛爬行则影响着网站内页是否被收录,所以,网站导航的设置在优化中的重要性可想而知了.而且一个网站中分别存在三个导航,怎么去设置这些导航才利于SEO优化呢?今天笔者来谈谈自己的经验心得. 一.主导航(菜单栏) 首先主导航其实就是咱们常说的菜单栏,这个导航条在网站中占据的

WinPE下注册表的几个优化设置方法

  有时候我们需要在PE的注册表里作一些优化以便我们更方便的使用,下面就几个优化设置的方法: 1.右键增加命令提示符和用记事本打开 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE_softwareClassesFoldershellcmd] @="命令提示符" [HKEY_LOCAL_MACHINE_softwareClassesFoldershellcmdcommand] @="cmd.exe /k &quo

linux apache 虚拟目录设置方法

linux apache 虚拟目录设置 打开/etc/httpd/conf/httpd.conf 文件,找到<IfModule dir_module>,在</IfModule>后面添加如下代码: #虚拟目录节点  代码如下 复制代码 <IfModule dir_module>     #设置欢迎界面    DirectoryIndex index.php index.html index.htm     Alias  /php  "F:/www.111cn.n

Linux用户磁盘配额设置方法_Linux

一:内核中支持QUOTA: [root@localhost /]# grep CONFIG_QUOTA /boot/config-3.10.0-123.el7.x86_64 CONFIG_QUOTA=y CONFIG_QUOTA_NETLINK_INTERFACE=y # CONFIG_QUOTA_DEBUG is not set CONFIG_QUOTA_TREE=y CONFIG_QUOTACTL=y CONFIG_QUOTACTL_COMPAT=y 如果有上列输出,则表示当前内核已经支持q

Apache 支持CGI程序和SSI程序的设置方法_Linux

由于Apache具有相当高的可移植性,它支持超过30种操作系统,包括Unix.Windows 及Darwin等系统,所以目前在网络上已注册的网域里大部份是使用Apache网页服务器.目前ApacheSoftware Foundation 正致力于发展现在已进入alpha测试阶段的Apache2.0.在这里,网页教学网和大家探讨如何修改服务器选项让服务器能提供简单的动态网页内容,也就是支持CGI程序及 Server-Side Include(SSI)程序. 1.准备工作 首先,我假设你已经安装好A

Red Hat Linux 安全设置方法_Linux

Windows Server 2003 系统配置方案 网络安全是指网络系统的硬件.软件及其系统中的数据受到保护,不受偶然的或者恶意的原因而遭到破坏.更改.泄露,系统连续可靠正常地运行,网络服务不中断. 网络安全从其本质上来讲就是网络上的信息安全.从广义来说,凡是涉及到网络上信息的保密性.完整性.可用性.真实性和可控性的相关技术和理论都是网络安全的研究领域. 1,最小化安全系统,删除不必要的软件,关闭不必要的服务. # ntsysv以下仅列出需要启动的服务,未列出的服务一律推荐关闭,必要运行的服务

重装系统后的简单优化设置方法介绍

1.改变我的文档的默认路径! 单击"开始" 出现下图 右击箭头所指,选属性,出现下图 点击箭头所指!就可以把我的文档的默认路径移动到其他盘了 这样做的优点是:避免系统盘资源紧张,重做系统后,保存在我的文档里的东西不会因为为备份而丢失! 2.禁用系统错误汇报 右击我的电脑-->选属性 点击箭头所指 在出现的对话框里将设置如下 3.移动IE临时文件夹 打开IE选项对话框 单击箭头所指,打开对话框: 点移动文件夹,就可以把文件移动到你想要的地方了! 这样做的好处是:IE产生的临时文件是