2022年系统性能调优LAMP架构共享 .pdf
《2022年系统性能调优LAMP架构共享 .pdf》由会员分享,可在线阅读,更多相关《2022年系统性能调优LAMP架构共享 .pdf(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、现在,使用LAMP(Linux?、Apache、MySQL和 PHP/Perl)架构的 应用程序不断被开发和部署。但是,服务器管理员对应用程序本身几乎没有控制能力,因为应用程序是别人编写的。这份共三部分的系列文章将讨论许多服务器配置问题,这些配置会影响应用程序的性能。第一篇文章讨论LAMP架构、一些性能度量技术以及一些基本的Linux内核、硬盘和文件系统调节。后续的文章将研究Apache、MySQL和 PHP组件的调优。本文大纲:LAMP架构、优化 Apache 和 PHP、MySQL 的调优Linux、Apache、MySQL和 PHP(或 Perl)是许多 Web应用程序的基础 从to-d
2、o列表到 blog,再到电子商务站点。WordPress 和 Pligg是两个支持大容量 Web站点的常用软件包。这种架构简称为LAMP。几乎每个Linux发布版都包含 Apache、MySQL、PHP和 Perl,所以安装LAMP软件是非常容易的。安装的简便性使人误以为这些软件会自行顺利地运行,但是实际情况并非如此。最终,应用程序的负载会超出后端服务器自带设置的处理能力,应用程序的性能会降低。LAMP安装需要不断监控、调优和评估。系统调优对于不同的人有不同的含义。本系列主要关注LAMP组件(Linux、Apache、MySQL和 PHP)的调优。对应用程序本身进行调优是另一个复杂的问题。应用
3、程序和后端服务器之间存在一种共生关系:未能适当调优的服务器甚至会使最好的应用程序在负载之下崩溃,而借助充分的调优,完全可以避免编写得很糟糕的应用程序使服务器缓慢如牛。幸运的是,正确的系统调优和监视可以指出应用程序中的问题。系统性能调优,第1 部分:理解 LAMP架构LAMP架构对任何系统调优的第一步都是了解它的工作原理。按照最简单的形式,基于 LAMP的应用程序是用PHP这样的脚本语言编写的,它们作为Linux主机上运行的Apache Web服务器的一部分运行。PHP应用程序通过请求的URL、所有表单数据和已捕获的任意会话信息从客户机获得信息,从而确定应该执行什么操作。如有必要,服务器会从My
4、SQL数据库(也在 Linux上运行)获得信息,将这些信息与一些HypertextMarkupLanguage(HTML)模板组合在一起,并将结果返回给客户机。当用户在应用程序中导航时,这个过程重复进行;当多个用户访问系统时,这个过程会并发进行。但是,数据流不是单向的,因为可以用来自用户的信息更新数据库,包括会话数据、统计数据(包括投票)和用户提交的内容(比如评论或站点更新)。除了动态元素之外,还有静态元素,比如图像、JavaScript代码和层叠样式表(CSS)。在研究 LAMP系统中的请求流之后,就来看看可能出现性能瓶颈的地方。数据库提供许多动态信息,所以数据库对查询的响应延迟都会反映在客
5、户机中。Web服务器必须能够快速地执行脚本,还要能够处理多个并发请求。最后,底层操作系名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 13 页 -统必须处于良好的状态才能支持应用程序。通过网络在不同服务器之间共享文件的 其他设置也可能成为瓶颈。度量性能持续地对性能进行度量在两个方面有帮助。首先,度量可以帮助了解性能趋势,包括好坏两方面的趋势。作为一个简单的方法,查看一下Web服务器上的中央处理单元(CPU)使用率,就可以了解CPU是否负载过重。同样,查看过去使用的总带宽并推断未来的变化,可以帮助判断什么时候需要进行网络升级。这些度量最好与其他度量和观测结合考虑。例如,当用户抱怨应
6、用程序太慢时,可以检查磁盘操作是否达到了最大容量。性能度量的第二个用途是,判断调优是对系统性能有帮助,还是使它更糟糕了。方法是比较修改之前和之后的度量结果。但是,为了进行有效的比较,每次应该只修改一个设置,然后对适当的指标进行比较以判断修改的效果。每次只修改一个设置的原因应该是很明显的:同时做出的两个修改很可能会相互影响。选择用来进行比较的指标比较微妙。选择的指标必须能够反映应用程序用户感觉到的响应。如果一项修改的目标是减少数据库的内存占用量,那么取消各种缓冲区肯定会有帮助,但是这会牺牲查询速度和 应用程序性能。所以,应该选择应用程序响应时间这样的指标,这会使调优向着正确的方向发展,而不仅仅是
7、针对数据库内存使用量。可以以许多方式度量应用程序响应时间。最简单的方法可能是使用curl命令,见清单 1。清单 1.使用 cURL度量 Web站点的响应时间1.$curl-o/dev/null-s-w%time_connect:%time_starttrahttp:/0.081:0.272:0.7792.清单 1 给出对一个流行的新闻站点执行curl命令的情况。输出通常是HTML代码,通过-o 参数发送到/dev/null。-s 参数去掉所有状态信息。-w 参数让curl写出表 1 列出的计时器的状态信息:表 1.curl使用的计时器计时器描述time_connect 建立到服务器的TCP连接
8、所用的时间time_starttransfer在发出请求之后,Web服务器返回数据的第一个字节所用的时间名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 13 页 -time_total完成请求所用的时间这 些计时器都相对于事务的起始时间,甚至要先于DomainName Service(DNS)查询。因此,在发出请求之后,Web服务器处理请求并开始发回数据所用的时间是 0.272-0.081=0.191 秒。客户机从服务器下载数据所用的时间是0.779-0.272=0.507 秒。通过观察curl数据及其随时间变化的趋势,可以很好地了解站点对用户的响应性。当然,Web站点不仅仅由页
9、面组成。它还有图像、JavaScript代码、CSS和cookie要处理。curl很适合了解单一元素的响应时间,但是有时候需要了解整个页面的装载速度。用于 Firefox浏览器的Tamper Data 扩展(参见 参考资料一节中的链接)可以在日志中记录Web浏览器发出的每个请求,并显示每个请求所用的下载时间。使用这个扩展的方法是,选择Tools TamperData 来打开 Ongoing requests窗口。装载要考察的页面,然后就会看到浏览器发出的每个请求的状态和装载每个元素所用的时间。图1 给出装载developerWorks主页的结果。图 1.用于装载developerWorks主页
10、的请求细目每一行描述一个元素的装载情况。显示的数据包括发出请求的时间、装载所用的时间、大小和结果。Duration栏列出装载元素本身所用的时间,Total Duration栏列出所有子元素所用的时间。在图 1 中,装载主要页面所用的时间是516 毫秒(ms),但是装载所有东西并显示整个页面所用的时间是5101 ms。TamperData 扩展有一种有用的模式,将页面装载数据的输出绘制成图形。右击Ongoing requests窗口上半部分的任何地方,并选择Graph all。图 2 显示图1 中数据的图形化视图。图 2.用于装载developerWorks主页的请求的图形化视图名师资料总结-精
11、品资料欢迎下载-名师精心整理-第 3 页,共 13 页 -在图 2 中,每个请求的持续时间显示为深蓝色,并相对于页面装载的启始时间显示。所以,可以看出哪些请求使整个页面的装载变慢了。尽管关注的重点是页面装载时间和用户体验,但是也不要忽视核心系统指标,比如磁盘、内存和网络。有许多实用程序可以捕获这些信息;其中最有帮助的可能是 sar、vmstat和 iostat。基本系统调节在对系统的Apache、PHP和 MySQL组件进行调优之前,应该花一些时间确保底层 Linux组件的运行正常。还应该对正在运行的服务进行缩减,只运行需要的那些服务。这不但是一种良好的安全实践,而且可以节省内存和CPU时间。
12、内核调优措施大多数 Linux发布版都定义了适当的缓冲区和其他TransmissionControlProtocol(TCP)参数。可以修改这些参数来分配更多的内存,从而改进网络性能。设置内核参数的方法是通过proc 接口,也就是通过读写/proc中的值。幸运的是,sysctl可以读取/etc/sysctl.conf中的值并根据需要填充/proc,这样就能够更轻松地管理这些参数。清单2 展示在互联网服务器上应用于Internet服务器的一些比较激进的网络设置。清单 2.包含较为激进的网络设置的/etc/sysctl.conf名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 13 页
13、 -1.#UseTCP syncookieswhenneedednet.ipv4.tcp_syncookies=1#EnableTCP windowscalingnet.ipv4.tcp_window_scaling:=1#IncreaseTCP max buffersizenet.core.rmem_max=16777216net.core.wmem_max=16777216#IncreaseLinuxautotuningTCP bufferlimitsnet.ipv4.tcp_rmem=40968738016777216net.ipv4.tcp_wmem=40966553616777216
14、#Increasenumberofportsavailablenet.ipv4.ip_local_port_range=1024650002.将这些设置添加到/etc/sysctl.conf的现有内容中。第一个设置启用TCPSYNcookie。当从客户机发来新的TCP连接时,数据包设置了SYN位,服务器就为这个半开的连接创建一个条目,并用一个SYN-ACK数据包进行响应。在正常操作中,远程客户机用一个ACK数据包进行响应,这会使半开的连接转换为全开的。有一种称为SYN泛滥(SYNflood)的网络攻击,它使 ACK数据包无法返回,导致服务器用光内存空间,无法处理到来的连接。SYNcookie特
15、性可以识别出这种情况,并使用一种优雅的方法保留队列中的空间(细节参见参考资料一节)。大多数系统都默认启用这个特性,但是确保配置这个特性更可靠。启用 TCP窗口伸缩使客户机能够以更高的速度下载数据。TCP允许在未从远程端收到确认的情况下发送多个数据包,默认设置是最多64 KB,在与延迟比较大的远程客户机进行通信时这个设置可能不够。窗口伸缩会在头中启用更多的位,从而增加窗口大小。后面四个配置项增加TCP发送和接收缓冲区。这使应用程序可以更快地丢掉它的数据,从而为另一个请求服务。还可以强化远程客户机在服务器繁忙时发送数据的能力。最后一个配置项增加可用的本地端口数量,这样就增加了可以同时服务的最大连接
16、数量。在下一次引导系统时,或者下一次运行sysctl-p/etc/sysctl.conf时,这些设置就会生效。配置磁盘来提高性能磁盘在 LAMP架构中扮演着重要的角色。静态文件、模板和代码都来自磁盘,组成数据库的数据表和索引也来自磁盘。对磁盘的许多调优(尤其是对于数据库)集中于避免磁盘访问,因为磁盘访问的延迟相当高。因此,花一些时间对磁盘硬件进行优化是有意义的。首先要做的是,确保在文件系统上禁用atime 日志记录特性。atime 是最近访问文件的时间,每当访问文件时,底层文件系统必须记录这个时间戳。因为系统管理员很少使用atime,禁用它可以减少磁盘访问时间。禁用这个特性的方法是,在/etc
17、/fstab的第四列中添加noatime 选项。清单3 给出了一个配置示例。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 13 页 -清单 3.演示如何启用noatime 的 fstab示例1./dev/VolGroup00/LogVol00/ext3defaults,noatime11LABEL=/boot/bootext3defaults,noatime12devpts/dev/ptsdevptsgid=5,mode=62000tmpfs/dev/shmtmpfsdefaults00proc/procprocdefaults00sysfs/syssysfsdefaults0
18、0LABEL=SWAP-hdb2swapswapdefaults00LABEL=SWAP-hda3swapswapdefaults002.在清单 3 中只修改了ext3文件系统,因为 noatime 只对驻留在磁盘上的文件系统有帮助。为让这一修改生效,不需要重新引导;只需重新挂装每个文件系统。例如,为了重新挂装根文件系统,运行mount/-o remount。有多种磁盘硬件组合,而且Linux不一定能够探测出访问磁盘的最佳方式。可以使用 hdparm 命令查明和设置用来访问IDE 磁盘的方法。hdparm-t/path/to/device执行速度测试,可以将这个测试结果作为性能基准。为了使结果
19、尽可能准确,在运行这个命令时系统应该是空闲的。清单 4 给出在 hda 上执行速度测试的结果。清单 4.在/dev/hd上执行的速度测试1.#hdparm-t/dev/hda/dev/hda:Timingbuffereddiskreads:182MB in3.02seconds=60.31MB/sec2.这一测试说明,在这个磁盘上读取数据的速度是大约每秒60 MB。在尝试一些磁盘调优选项之前,必须注意一个问题。错误的设置可能损害文件系统。有时候会出现一个警告,指出这个选项与硬件不兼容;但是,有时候没有警告消息。因此,在将系统投入生产之前,必须对设置进行彻底的测试。在所有服务器上都采用标准的硬件
20、也会有所帮助。表 2 列出比较常用的一些选项。表 2.hdparm 的常用选项选项描述-vi向磁盘查询它支持的设置以及它正在使用的设置。-c 查询/启用(E)IDE 32 位 I/O支持。hdparm-c 1/dev/hda启用这个设置。-m查询/设置每中断多扇区模式。如果设置大于零,设置值就是每个中断可以传输的最大扇区数量。名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 13 页 -d 1-X 启用直接内存访问(DMA)传输并设置IDE 传输模式。hdparm 手册页详细说明了在-X 后面可以设置的数字。只有在-vi说明目前并未使用最快速的模式的情况下,才需要进行这个设置。不幸
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年系统性能调优LAMP架构共享 2022 系统 性能 LAMP 架构 共享
限制150内