LAMP系统性能调优_第1页
LAMP系统性能调优_第2页
LAMP系统性能调优_第3页
LAMP系统性能调优_第4页
LAMP系统性能调优_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、今天,使用LAMP(Linux、Apache、MySQL和PHP/Perl)架构的应用程序在不断地开发和部署。但是,服务器管理员对应用程序本身几乎没有控制权,因为应用程序是由其他人编写的。这个由三部分组成的系列将讨论许多影响应用程序性能的服务器配置问题。第一篇文章讨论了LAMP体系结构、一些性能测量技术以及一些基本的Linux内核、硬盘和文件系统调优。后续文章将研究Apache、MySQL和PHP组件的调优。Linux、Apache、MySQL和PHP(或Perl)是许多Web应用程序的基础,从待办事项列表到博客再到电子商务网站。WordPress和Pligg是支持大容量网站的两个常见软件包。

2、这种架构简称为LAMP。几乎每个Linux发行版都包括Apache、MySQL、PHP和Perl,所以安装LAMP软件非常容易。安装的简易性误导了人们,让他们以为软件会自己顺利运行,但事实并非如此。最后,应用程序的负载将超过后端服务器自身设置的处理能力,应用程序的性能将下降。LAMP安装需要持续的监控、调整和评估。系统调优对不同的人有不同的意义。本系列着重于LAMP组件的调优(Linux、Apache、MySQL和PHP)。调整应用程序本身是另一个复杂的问题。应用程序和后端服务器之间有一种共生关系:没有经过适当调整的服务器甚至可以在负载下使最好的应用程序崩溃,而通过适当的调整,完全有可能避免写

3、得不好的应用程序像牛一样使服务器变慢。幸运的是,正确的系统调整和监控可以指出应用程序中的问题。LAMP架构调整任何系统的第一步是了解它是如何工作的。最简单的形式是,基于LAMP的应用程序是用脚本语言编写的,比如PHP,并作为运行在Linux主机上的Apache Web服务器的一部分运行。PHP应用程序通过请求的URL从客户端获取信息、所有表单数据和任何捕获的会话信息,以确定应该采取什么措施。如有必要,服务器从MySQL数据库(也运行在Linux上)获取信息,将信息与一些超文本标记语言(HTML)模板相结合,并将结果返回给客户端。当用户在应用程序中导航时,会重复此过程。当多个用户访问系统时,该过

4、程同时发生。然而,数据流不是单向的,因为数据库可以用来自用户的信息进行更新,包括会话数据、统计数据(包括投票)和用户提交的内容(如评论或网站更新)。除了动态元素,还有静态元素,如图像、JavaScript代码和级联样式表(CSS)。在研究了LAMP系统中的请求流之后,让我们看看可能的性能瓶颈。数据库提供了大量的动态信息,因此数据库对查询的响应延迟反映在客户端。网络服务器必须能够快速执行脚本并处理多个并发请求。最后,底层操作系统必须处于良好状态以支持应用程序。通过网络在不同服务器之间共享文件的其他设置也可能成为瓶颈。LAMP的变体LAMP最初指的是Linux、Apache、MySQL和PHP(或

5、Perl)。然而,如果管理员不擅长Linux,在微软视窗系统上运行Apache、MySQL和PHP并不罕见。类似地,Apache也可以被其他系统取代,比如lighttpd,它仍然生产LAMP风格的系统,但缩写不再是LAMP。您还可以使用另一个开源数据库(如PostgreSQL或SQLite)、一个商业数据库(如IBM DB2)或一个免费的商业引擎(如IBM DB2 Express-C)。本文关注传统的LAMP架构,因为这种架构是最常见的,它的组件都是开源的。公制性能持续的绩效评估在两个方面有所帮助。首先,度量可以帮助理解性能趋势,包括好的和坏的。作为一个简单的方法,检查网络服务器上中央处理器的

6、使用率,看看中央处理器是否过载。同样,查看过去使用的总带宽并推断未来的变化有助于确定何时需要网络升级。这些指标最好与其他指标和观察结合起来考虑。例如,当用户抱怨应用程序速度太慢时,他们可以检查磁盘操作是否已达到最大容量。性能指标的第二个目的是确定调优是有助于系统性能还是更差。方法是比较修改前后的测量结果。但是,为了进行有效的比较,一次只能修改一个设置,然后应该比较适当的指标来判断修改的效果。一次只更改一个设置的原因应该很明显:同时进行的两个更改可能会相互影响。选择用于比较的指标更加微妙。所选指标必须反映应用程序用户感受到的响应。如果修改的目标是减少数据库的内存占用,取消各种缓冲区肯定会有所帮助

7、,但会牺牲查询速度和应用程序性能。因此,我们应该选择诸如应用程序响应时间这样的指标,这将使调优朝着正确的方向发展,而不仅仅是针对数据库内存的使用。应用程序响应时间可以通过多种方式来衡量。最简单的方法可能是使用curl命令,如清单1所示。清单1。用cURL度量网站的响应时间1.$ curl-o/dev/null-s-w % time _ connect :% time _ start transfer :% time _ total 2.3.0.08133600.27233600.779复制代码清单1展示了curl命令在热门新闻网站上的执行。输出通常是HT

8、ML代码,并通过-o参数发送到/dev/null。-s参数移除所有状态信息。-w参数使curl写出表1中所列计时器的状态信息:表1。卷曲使用的计时器计时器形容时间连接建立到服务器的TCP连接所花费的时间time_starttransfer发出请求后,网络服务器返回第一个数据字节所花费的时间。时间总计完成请求所需的时间这些计时器与事务的开始时间相关,甚至在域名服务(DNS)查询之前。因此,在发出请求后,网络服务器处理请求并开始发回数据所需的时间为0.272-0.081=0.191秒。客户端从服务器下载数据所需的时间为0.779 -0.272=0.507秒。通过观察卷曲数据及其随时间的变化趋势,可

9、以很好地理解网站对用户的响应。当然,网站不仅仅是由页面组成的。它还有图像、JavaScript代码、CSS和cookie要处理。Curl有助于理解单个元素的响应时间,但是有时您需要知道整个页面的加载速度。火狐浏览器的篡改数据扩展可以在日志中记录来自网络浏览器的每个请求,并显示每个请求的下载时间。使用此扩展的方法是选择工具篡改数据来打开正在进行的请求窗口。加载您要检查的页面,然后您将看到浏览器发出的每个请求的状态以及加载每个元素所花费的时间。图1显示了加载developerWorks主页的结果。图1。加载developerWorks主页的请求细分下载(45.27千字节)2008-7-23 10:

10、49每行描述一个元素的加载。显示的数据包括发出请求的时间、加载所需的时间、大小和结果。“持续时间”列列出了加载元素本身所需的时间,“总持续时间”列列出了加载所有子元素所需的时间。在图1中,加载主页所花费的时间是516毫秒(ms),但是加载所有内容并显示整个页面所花费的时间是5101 ms篡改数据扩展有一个有用的模式,可以将页面加载数据的输出绘制到一个图形中。右键单击“正在进行的请求”窗口上半部分的任意位置,然后选择“全部绘制图表”。图2示出了图1中数据的图形视图。图2。加载开发人员工作主页请求的图形视图下载(97.54千字节)2008-7-23 10:49在图2中,每个请求的持续时间以深蓝色显

11、示,并且相对于页面加载的开始时间显示。因此,您可以看到哪些请求减缓了整个页面的加载速度。尽管重点是页面加载时间和用户体验,但核心系统指标(如磁盘、内存和网络)不应被忽视。有许多实用程序可以捕获这些信息;其中,sar、vmstat和iostat可能是最有帮助的。基本制度规定在调优系统的Apache、PHP和MySQL组件之前,应该需要一些时间来确保底层Linux组件正常运行。还必须将运行服务的数量减少到仅需要的数量。这不仅是一个很好的安全实践,而且节省了内存和CPU时间。一些快速内核调优措施大多数Linux发行版定义了适当的缓冲区和其他传输控制协议(TCP)参数。可以修改这些参数以分配更多内存来

12、提高网络性能。设置内核参数的方法是通过proc接口,也就是说,通过在/proc中读取和写入值。幸运的是,sysctl可以读取/etc/sysctl.conf中的值,并根据需要填充/proc,从而更容易管理这些参数。清单2显示了应用于互联网服务器上的互联网服务器的一些更激进的网络设置。清单2。/etc/sysctl.conf具有更强的网络设置1.#需要时使用传输控制协议同步2.net.ipv4.tcp_syncookies=13.#启用传输控制协议窗口缩放4.net . IP v4 . TCP _ window _ scale :=15.#增加传输控制协议最大缓冲区大小6.net.core.rm

13、em_max=7.net.core.wmem_max=8.#增加Linux自动调整TCP缓冲区限制9.net.ipv4.tcp_rmem=4096 8738010.net.ipv4.tcp_wmem=4096 6553611.#增加可用的端口数量12.net . IP v4 . IP _ local _ port _ range=1024 65000复制代码将这些设置添加到/etc/sysctl.conf的现有内容中。当客户端发送新的TCP连接时,数据包设置同步位,服务器为半开放连接创建一个条目,并以同步确认数据包进行响应。在正常操作中,远程客户端用一个确认数据包进行响应,该数据包将半开放连接

14、转换为完全开放连接。有一种称为SYN泛洪的网络攻击,它阻止确认数据包返回,导致服务器内存空间不足,无法处理传入的连接。SYN cookie特性可以识别这种情况,并使用一种优雅的方法在队列中预留空间(请参见参考资料部分了解详细信息)。大多数系统默认启用此功能,但请确保更可靠地配置此功能。启用TCP窗口缩放使客户端能够以更高的速度下载数据。TCP允许发送多个数据包,而无需从远程接收确认。默认设置最高为64 KB,这在与远程客户端进行大延迟通信时可能不够。窗口缩放使标题中有更多的位,增加了窗口大小。最后四个配置项添加了TCP发送和接收缓冲区。这允许应用程序更快地丢失数据,以满足另一个请求。它还可以增

15、强远程客户端在服务器繁忙时发送数据的能力。最后一个配置项增加了可用本地端口的数量,从而增加了可以同时服务的最大连接数。这些设置将在下次启动系统或下次运行sysctl-p/etc/sysctl.conf时生效。配置磁盘以提高性能磁盘在LAMP体系结构中起着重要的作用。静态文件、模板和代码都来自磁盘,构成数据库的数据表和索引也来自磁盘。由于磁盘访问的高延迟,许多磁盘调整(尤其是对于数据库)侧重于避免磁盘访问。因此,花一些时间优化磁盘硬件是有意义的。首先要做的是确保在文件系统上禁用atime日志记录。Atime是文件最近被访问的时间,当文件被访问时,底层文件系统必须记录这个时间戳。因为系统管理员很少使用atime,禁用它可以减少磁盘访问时间。禁用此功能的方法是在/etc/fstab的第四列中添加noatime选项。清单3显示了一个配置示例。清单3。演示如何启用noatime的fstab示例1./dev/VolGroup

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论