LAMP 系统性能调优:第2 部分: 优化Apache 和PHP-学习笔记

二 配置MPM 

Apache 是模块化的,因为可以轻松添加和移除特性。在Apache 的核心,多处理模块(Multi-Processing Module,MPM )提供了这种模块化功能性—— 管理网络连接、调度请求。MPM 使您能够使用线程,甚至能够将Apache 迁移到另外一个操作系统。

每次只能有一个MPM 是活动的,必须使用 --with-mpm=(worker|prefork|event) 静态编译。

每个请求使用一个进程的传统模型称为 prefork 。较新的线程化模型称为  worker,它使用多个进程,每个进程又有多个线程,这样就能以较低的开销获得更好的性能。最新的  eventMPM 是一种实验性的模型,为不同的任务使用单独的线程池。要确定当前使用的是

哪种MPM ,可执行 httpd -l。例如:

[[email protected] conf]# httpd -l

Compiled in modules:

core.c

  prefork.c

http_core.c

mod_so.c

选择使用何种MPM 取决于许多因素。在event MPM 脱离实验状态之前,不应考虑这种模型,而是在使用线程和不使用线程之间作出

选择。表面上看来,如果所有底层模块(包括PHP 使用的所有库)都是线程安全的,线程要优于分叉(forking)。

而Prefork 是较为安全的选择;如果选择了worker,则应该谨慎测试。性能收益还取决于您的发布版所附带的库及硬件无论选择了哪种MPM ,都必须恰当地配置它。一般而言,配置MPM 包括告知Apache 怎样去控制有多少worker 正在运行,它们是

线程还是进程。prefork MPM 的重要配置选项如清单1 所示。编辑http.conf 主配置文件可以看到:

StartServers 50     #预先启动进程

MinSpareServers 15  #最小空闲进程

MaxSpareServers 30  #最大空闲进程

MaxClients 225      #允许连接数

MaxRequestsPerChild 4000

prefork 模型会为每个请求创建一个新进程。多余的进程保持空闲,以

处理传入的请求,这缩短了启动延迟。只要Web 服务器出现,预先完

成的配置就会立即启动50 个进程,并尽力保持10 到20 个空闲服务器

运行。进程数的硬性限制由 MaxClients 指定。尽管一个进程能够处

理许多相继的请求,Apache 还是会取消连接数超过4,000 以后的进

程,这降低了内存泄漏的风险。

配置线程化MPM 与之类似,不同之处只是必须确定使用多少线程和进

程。Apache 文档解释了所有必要的参数和计算。

prefork 模型会为每个请求创建一个新进程。多余的进程保持空闲,以

处理传入的请求,这缩短了启动延迟。只要Web 服务器出现,预先完

成的配置就会立即启动50 个进程,并尽力保持10 到20 个空闲服务器

运行。进程数的硬性限制由 MaxClients 指定。尽管一个进程能够处

理许多相继的请求,Apache 还是会取消连接数超过4,000 以后的进

程,这降低了内存泄漏的风险

配置线程化MPM 与之类似,不同之处只是必须确定使用多少线程和进

程。Apache 文档解释了所有必要的参数和计算。要经过几次尝试和出错之后才能选好要使用的值。最重要的值是MaxClients。目标在于允许足够多的workder 进程或线程运行,同时又不会导致服务器进行过度的交换。如果传入的请求超出处理能力,那么至少满足此值的那些请求会得到服务,其他请求被阻塞。

如果 MaxClients 过高,那么所有客户机都将体验到糟糕的服务,因为Web 服务器会试图换出一个进程,以使另一个进程能够运行。而设得过低意味着可能会不必要地拒绝服务。查看高负载下运行的进程数量和所有Apache 进程所导致的内存占用情况对设置这个值很有帮助。如果 MaxClients 的值超过256,必须将 ServerLimit 也设为同样的数值。

Apache 处理的每个请求都要履行一套复杂的规则,这些规则指明了Web 服务器必须遵循的约束或特殊指令。对文件夹的访问可能按

IP 地址约束为某个特定文件夹,也可配置用户名和密码。这些选项还包含处理特定文件,例如,如果提供了一个目录列表,该如何处

理的文件,或输出结果是否应压缩。

这些配置以httpd.conf 中容器的形式出现,例如<Directory>,以便指定所用配置引用的是磁盘上的一个位置;再如<Location>,表

示引用是URL 中的路径。清单2 展示了一个实际的Directory 容器。

php.ini

PHP 的配置是在php.ini 中完成的。四个重要的设置控制PHP 可使用多少系统资源,如表1 所列。

表1. php.ini 中与资源相关的设置

设置 描述 建议值

max_execution_time 一个脚本可使用多少CPU 秒 30

max_input_time 一个脚本等待输入数据的时间有多长(秒) 60

memory_limit 在被取消之前,一个脚本可使用多少内存(字节) 32M

output_buffering 数据发送给客户机之前,有多少数据(字节)需要缓存 4096

具体数字主要取决于您的应用程序。如果要从用户处接收大文件,那么 max_input_time 可能必须增加,可以在php.ini 中修改,也

可以通过代码重写它。与之类似,CPU 或内存占用较多的程序也可能需要更大的设置值。目标就是缓解超标程序的影响,因此不建

议全局禁用这些设置。关于 max_execution_time,还有一点需要注意:它表示进程的CPU 时间,而不是绝对时间。因此一个进

行大量I/O 和少量计算的程序的运行时间可能远远超过 max_execution_time。这也是 max_input_time 可以大于

max_execution_time 的原因所在。

PHP 可执行的日志记录数是可配置的。在生产环境中,禁用除最重要的日志以外的一切日志记录能够减少磁盘写操作。如果需要使用

日志来排除问题,那么可以按需启用日志记录。error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR 将启用足够

的日志记录,使您发现问题,同时从脚本中消除大量无用的内容。

回页首

时间: 2024-10-01 06:51:37

LAMP 系统性能调优:第2 部分: 优化Apache 和PHP-学习笔记的相关文章

LAMP 系统性能调优之内核调优措施

LAMP 系统性能调优之内核调优措施 2011-03-18 11:21 Sean A. Walberg 网络转载 字号:T | T 在对系统的 Apache.PHP 和 MySQL 组件进行调优之前,应该花一些时间确保底层 Linux 组件的运行正常.这点是非常重要的! AD:2014WOT全球软件技术峰会北京站 课程视频发布 LAMP LAMP的一些快速的内核调优措施 大多数 Linux 发布版都定义了适当的缓冲区和其他 Transmission Control Protocol(TCP)参数

LAMP 系统性能调优之网络文件系统调优

LAMP 系统性能调优之网络文件系统调优 2011-03-21 09:35 Sean A. Walberg 网络转载 字号:T | T 使用LAMP系统的用户,都想把自己LAMP性能提高运行的速度提高,那它有一点可以调优: 网络文件系统 ,我们知道网络文件系统是网络共享磁盘的一个系统,我们来进行调优下! AD:2014WOT全球软件技术峰会北京站 课程视频发布 图-LAMP LAMP网络文件系统调优 网络文件系统(NFS)是一种通过网络共享磁盘的方法.NFS 可以帮助确保每个主机具有相同数据的拷

LAMP 系统性能调优:第1 部分: 基础环境调优-学习笔记

LAMP 最初是指Linux .Apache.MySQL 和PHP(或Perl). LAMP 环境调优 对任何系统进行调优的第一步都是了解它的工作原理.按照最简单的形式,基于LAMP 的应用程序是用PHP 这样的脚本语言编写的,它们作为Linux 主机上运行的Apache Web 服务器的一部分运行. PHP 应用程序通过请求的URL.所有表单数据和已捕获的任意会话信息从客户机获得信息,从而确定应该执行什么操作.如有必要,服务器会从MySQL 数据库(也在Linux 上运行)获得信息,将这些信息

Linux操作系统性能调优的方法

Linux操作系统性能调优的方法 2013-03-18 15:35 HonestQiao ChinaUnix 字号:T | T Linux是一套免费使用和自由传播的类Unix操作系统,Linux不同的发行版本和不同的内核对各项参数及设置均做了改动,从而使得系统能够获得更好的性能.本文分享了几种技巧对Linux操作系统进行性能的优化. AD:2014WOT全球软件技术峰会北京站 课程视频发布 按照传统,Linux不同的发行版本和不同的内核对各项参数及设置均做了改动,从而使得系统能够获得更好的性能.

Perf Event :Linux下的系统性能调优工具

Perf Event :Linux下的系统性能调优工具 2011-05-27 10:35 刘 明 IBMDW 字号:T | T Perf Event 是一款随 Linux 内核代码一同发布和维护的性能诊断工具,由内核社区维护和发展.Perf 不仅可以用于应用程序的性能统计分析,也可以应用于内核代码的性能统计和分析.得益于其优秀的体系结构设计,越来越多的新功能被加入 Perf,使其已经成为一个多功能的性能统计工具集 .本文将介绍 Perf 在应用程序开发上的应用. AD:2014WOT全球软件技术

Android系统性能调优工具介绍

经作者授权,发表Tieto某青年牛的一篇<程序员>大作. Android系统性能调优工具介绍 在软件开发过程中,想必很多读者都遇到过系统性能问题.而解决系统性能问题的几个主要步骤是: 测评:对系统进行大量有针对性的测试,以得到合适的测试数据. 分析系统瓶颈:分析测试数据,找到其中的hotspot(热点,即bottleneck). 性能优化:对hotspot相关的代码进行优化. 由上述步骤可知,性能优化的目标对象是hotspot.如果找到的hotspot并非真正的热点,则性能优化的结果必然是事倍

《java系统性能调优》--1.发现瓶颈

性能啊!性能! 之所以想写写性能调优,也是有感于我们的项目,我们采用一些手段使得系统性能上升了一个台阶,总是需要把这点经验沉淀一下.随着工作的深入,关于系统性能的事肯定还有很多,也算是通过这个系列文章做做笔记.优化可能包括应用级别的优化,也可能包括代码级别的优化. "要进行优化,先得找到性能瓶颈!" 忘记是从哪里看到了这句话,但总算切中要害. 但在找性能瓶颈之前,我们总要先对系统性能有一个概念. 如何在不购买新硬件的条件下完成更多的工作?何时才真正需要添加硬件(更多的内存,更快的磁盘.

系统性能调优吐血总结分享:转载

概述 Ø 性能优化的思路 首先是较为精准的定位问题,借助于相应的工具包,分析系统性能瓶颈在哪,在根据其性能指标,以及所处于层级决定选择优化的方式方法.在选择优化的方式方法时,大家可以参照以下章节调优方法,架构优化递进,进行正确的,有针对性,有步骤的优化.可能会发现部分指导思想或许有相悖嫌疑,大可不必较真,系统优化的过程本身就是一个不断分离+共享的组合拳,至于具体选择哪种优化方式,根据具体需求来定,但大型应用发展的总体思路是不断分离,在通过索引(非数据库)进行关联起来, 切记:优化一定要对系统进行

linux 系统性能调优 相关命令汇总

linux 系统性能调优 相关命令汇总: 1. ps:查看系统中当前有哪些进程在运行 常用命令有ps aux  | grep  -i  mysql http://www.cnblogs.com/peida/archive/2012/12/19/2824418.html 2. top:动态显示各个程序对cpu,内存的占用,以及负载的情况 http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316399.html 3. io的总体负载,进程的io