Apache的配置是针对原先较低的服务器来配置的,原先的配置显然已经不适合了,所以今天开始研究下Apache配置的问题。

1. 首先要了解Apache采用的MPM(Multi -Processing Modules,多道处理模块)
MPM是Apache的核心,它的作用是管理网络连接、调度请求。

Apache2.0中MPM分为3种(perfork、worker、event)。perfork从Apache1.3中继承下来的,它采用的是进程管理方式,所以它可以提供更可靠的性能和更好的兼容性;worker是Apache2.0中新增加的方式,它采用了线程控制方法,可以比perfork更节约系统开销、处理更多的数据量,但同时兼容性并不是很好,很多旧的程序无法工作在worker下;event仍处于试验阶段,它为每个任务分配不同的进程池,目前不应该采用。
通过命令 httpd -l 可以获取目前Apache采用的是哪种MPM
本文仅针对perfork方式进行讨论

2. 了解perfork的工作方式

查看Apache2.0的配置文件httpd.conf,可以看到perfork的配置段,大致如下:

ServerLimit       256
StartServers       5
MinSpareServers   10
MaxSpareServers   15
MaxClients       256
MaxRequestsPerChild  4000

当Apache被启动时,Apache会自动创建StartServers个进程,并且尽力将空闲进程数保持在MinSpareServers和MaxSpareServers之间。
如果空闲进程小于MinSpareServers,Apache将会以大约每秒1个的速度新建进程。
如果空闲进程小于MaxSpareServers,Apache将会删除多余的空闲进程,释放服务器资源。
进程数的最大值由MaxClients控制,在Apache1.3中最大只能设置为256,但在Apache2.0中,可以通过在配置开头增加ServerLimit项目来突破256的限制,此时必须 MaxClients ≤ ServerLimit ≤ 20000
MaxRequestsPerChild用来控制每个进程在处理了多少次请求之后自动销毁,这个参数可以设置为0表示无限(即不销毁进程)。

3. 优化perfork
首先,对于一个负载相对较高的网站来说,256的进程限制是不够的,如果服务器已经达到256的极限,那么接下去的访问就需要排队,这也就是为什么某些服务器负载不高,但是访问却很慢的原因之一。所以首先应该了解服务器在繁忙时的进程数量。
通过命令ps -ef|grep httpd|wc -l可以了解到当前系统中Apache进程数,通过设置ServerLimit和MaxClients来达到为服务器软扩容的目的。

然后,在访问量高峰期,经常会出现的情况是突然之间发生非常多的并发连接,然后突然之间减少了很多访问。如果Apache没有准备足够数量的预备进程,那访问只能等待Apache每秒1个的新增进程,随后又要将多余的进程删除,那Apache只能一直忙于新建和销毁进程,大大地降低了访问速度。可以适当增加StartServers、MinSpareServers、MaxSpareServers来使得Apache不需要一直忙于作无用功。

最后,强烈推荐MaxRequestsPerChild不要设置为0,设置为非0,可以保护Apache进程免遭内存泄漏的影响,因为你不知道运行在Apache上的应用程式在什么时候会出错导致内存泄漏。

设置完之后大致是这样的:

ServerLimit       1000
StartServers       30
MinSpareServers   30
MaxSpareServers   45
MaxClients       1000
MaxRequestsPerChild  4000
本文转自 佛哒 51CTO博客,原文链接:http://blog.51cto.com/fodaa/1952400,如需转载请自行联系原作者

apache性能优化相关推荐

  1. 25个Apache性能优化技巧推荐

    Apache 至今仍处于web服务器领域的霸主,无人撼动,没有开发者不知道.本篇文章介绍25个Apache性能优化的技巧,如果你能理解并掌握,将让你的Apache性能有显著的提升! Apache 部分 ...

  2. 1g内存服务器Apache怎么优化,Apache性能优化-解决吃内存的问题 | kTWO-个人博客

    虽然现在已经00:22了,但是还是抑制不住内心的激动,因为解决了好几天以来一直困惑我的问题--服务器httpd服务一直在吃内存,只要有人访问,服务器的内存就会小一点,慢慢的就会被吃掉所有内存,经过几天 ...

  3. Apache的性能优化

    服务器型号: 型号:DELL1750 cpu:Intel Xeon(TM) CPU 3.06GHz 内存 :1G 硬盘:70/70/70 操作系统:FreeBSD 4.8p-STABLE 主要针对的应 ...

  4. apache php 调优_Apache的性能优化实例(一)

    本文主要和大家分享Apache的性能优化(一),希望能帮助到大家. Apache缺省的最大用户数是256个:这个配置对于服务器内存还是256M左右的时代是一个非常好的缺省设置,但随着内存成本的急剧下降 ...

  5. apache性能配置优化

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

  6. Apache的压力测试以及web性能优化的常用知识总结

    这篇文章主要介绍了Apache的压力测试以及web性能优化的常用知识总结,笔记由<构建高性能web站点>这本高人气书籍整理而来,需要的朋友可以参考下  什么是带宽? 误解:"数据 ...

  7. apache php 调优_Apache的性能优化(二)

    具体模块定制: 编译和包含是两个不同的概念.编译是指这个模块被编译了,要想使用它,只用简单的修改httpd.conf加上LoadModule xxx_module libexec/mod_xxx.so ...

  8. Apache 2.0性能优化—MPM的选择与配置

    Apache 2.0性能优化-MPM的选择与配置 谈到Apache,大多数系统管理员对其稳定版1.3印象颇深.虽然Apache 2.0的系列开发版早已由Alpha.Beta发展到现在的GA(Gener ...

  9. Apache之三种工作模式和配置性能优化

    1 Apache的3种模式和版本 Apache目前一共有三种稳定的MPM(Multi-Processing Module,多进程处理模块)模式,它们分别是prefork,worker和event. 我 ...

最新文章

  1. Python中scrapy下载保存图片
  2. STM32F407之搭建工程
  3. ML之kNN(两种):基于两种kNN(平均回归、加权回归)对Boston(波士顿房价)数据集(506,13+1)进行价格回归预测并对比各自性能
  4. SharePoint 2007 用户创建 MySite 过程发生错误一例【已解决】
  5. 我的同事Leo做的一个AR增强现实的项目
  6. 在linux文件共享接口,入坑Linux-day13(使用vsftpd服务传输文件、使用Samba或NFS实现文件共享)...
  7. cf1453B. Suffix Operations
  8. ROS launch文档介绍
  9. 2020全球工业互联网大会在沈阳召开,聚焦新业态、新模式,“新基建”促进国内国际双循环等热点
  10. matlab对比r语言,R语言与matlab循环时间对比
  11. JQuery iframe页面通过parent方法操作父页面中的元素与方法(实例讲解)
  12. Linux的Cache Memory(缓存内存)机制
  13. linux vnc开启防火墙,[转载]CentOS 6.0 下 VNC 配置方法(带防火墙配置)
  14. 计算机培训ppt课件,计算机基础操作培训ppt课件.ppt
  15. linux程序编译过程
  16. Github 源码阅读神器:Octotree
  17. 计算机网络中的猫,猫(调制解调器)和路由器有什么区别和功能?
  18. Ubuntu18.04创建WiFi热点
  19. SIM卡交换方案的工作原理
  20. HTML+CSS+JS实现轮播效果

热门文章

  1. 用jQuery实现页面遮罩弹出框
  2. C++中成员初始化列表的使用
  3. numpy.random模块常用函数
  4. 7-4 统计一行文本的单词个数 (15 分)
  5. 7-107 找出三位水仙花数 (15 分)
  6. java第一句_Java如何开始第一个项目?
  7. matlab模拟退火最小球覆盖,【模板】模拟退火 费马点以及最小球覆盖
  8. ETL之Kettle
  9. (转!)Netdata---Linux系统性能实时监控平台部署
  10. 从资源管理器中,获取被选择的文件的路径(及文件夹)的API