LAMP服务器性能优化技巧之Linux主机优化

发表于:2011-5-12 10:16

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:曹江华    来源:51Testing软件测试网采编

#
Linux
#
linux

  LAMP服务器的性能优化:

  目前LAMP (Linux + Apache + MySQL + PHP) 近几年来发展迅速,已经成为Web 服务器的事实标准。

  LAMP这个词的由来最早始于德国杂志“c't Magazine”,Michael Kunze在1990年最先把这些项目组合在一起创造了LAMP的缩写字。这些组件虽然并不是开开始就设计为一起使用的,但是,这些开源软件都可以很方便的随时获得并免费获得。这就导致了这些组件经常在一起使用。在过去的几年里,这些组件的兼容性不断完善,在一起的应用情形变得非常普便。为了改善不同组件之间的协作,已经创建了某些扩展功能。目前,几乎在所有的Linux发布版中都默认包含了“LAMP stack”的产品。这些产品组成了一个强大的Web应用程序平台。“LAMP stack”中的每一个组件都是一个FOSS(免费或者开源软件/Free or Open Source Software)的实例。

  FOSS方法的好处有三个方面。

  第一,FOSS软件的性质意味着应用程序可以免费下载,能够让更广泛的人们不用付费就可以使用这个应用软件。这种免费的方式对于广大用户特别具有吸引力。这些用户如果不使用免费的软件就需要付费购买“专业”的商用软件工具。这在制作网站方面通常是一种昂贵的步骤。

  第二,FOSS许可证是开放式的,因此对于基于FOSS技术的应用软件的使用和限制都非常少。不需要为软件的发布支付任何许可证费就可以开发和应用基于LAMP的工程。因此,这对业余爱好者和专业人员都非常有吸引力。FOSS技术(包括LAMP)的增长和使用的主要原因是因为用户能够访问其资源,修复故障和改善应用软件的性能都非常容易。

  与开源软件许可证结合在一起,这种方法为许多企业简化了开发过程,并且为企业提供了专有软件或者商业软件的限制中所没有的灵活性。

  本文我们将介绍基于LAMP组合的服务器的性能优化技巧:

  LAMP优化:清理服务器磁盘碎片

  不论Linux文件系统采用什么文件格式(ext3、JFS、XFS、ReiserFS )、何种类型的硬盘(IDE 、SCSI),随着时间的推移文件系统都会趋向于碎片化。ext3、JFS等高级文件系统可以减少文件系统的碎片化,但是并没有消除。在繁忙的数据库服务器中,随着时间的过去,文件碎片化将降低硬盘性能,硬盘性能从硬盘读出或写入数据时才能注意到。时间长了会发现每个磁盘上确实积累了非常多的垃圾文件,释放磁盘空间可以帮助系统更好地工作。Linux最好的整理磁盘碎片的方法是做一个完全的备份,重新格式化分区,然后从备份恢复文件。但是对于7×24小时工作关键任务服务器来说是比较困难的。

  Kleandisk是一个高效的磁盘清理工具,它能把磁盘上的文件分成不同的“组”,比如把所有的“core”文件归成一组(Group),这样要删除所有core文件时只要删除这个组就行了。core文件是当软件运行出错时产生的文件,它对于软件开发人员比较有用,对于其他用户(比如电子邮件服务器)却没有任何意义。因此,如果没有软件开发的需要,见到core文件就可以将其删除。

  LAMP优化:开启硬盘DMA

  现在使用的IDE硬盘基本支持DMA66/100/133(直接内存读取)但是Linux发行版本安装后一般没有打开,可以/etc/rc.d/rc.local 最後面加上一行: /sbin/hdparm -d1 –x66 -c3 -m16 /dev/hda 这样以后每次开机,硬盘的 DMA 就会开启,不必每次手动设定。添加前后你可以使用命令:hdparm -Tt /dev/hda 来测试对比一下。

  LAMP优化:调整缓冲区刷新参数

  Linux内核中,包含了一些对于系统运行态的可设置参数。缓冲刷新的参数可以通过调整 /proc/sys/vm/bdflush文件来完成,这个文件的格式是这样的:

  1. # cat /proc/sys/vm/bdflush  
  2. 30 64 64 256 500 3000 60 0 0  

  每一栏是一个参数,其中最重要的是前面几个参数。第一个数字是在"dirty"缓冲区达到多少的时候强制唤醒bdflush进程刷新硬盘,第二个数字是每次让bdflush进程刷新多少个dirty块。所谓dirty块是必须写到磁盘中的缓存块。接下来的参数是每次允许bd flush将多少个内存块排入空闲的缓冲块列表。 以上值为RHEL 4.0中的缺省值。可以使用两种方法修改:

  (1)使用命令

  1. # echo "100 128 128 512 5000 3000 60 0 0">/proc/sys/vm/bdflush  

  并将这条命令加到/etc/rc.d/rc.local文件中去。

  (2)在/etc/sysctl.conf 文件中加入如下行:

  1. vm.bdflush = 100 128 128 512 5000 3000 60 0 0  

  以上的设置加大了缓冲区大小,降低了bdflush被启动的频度,VFS的缓冲刷新机制是Linux文件系统高效的原因之一。

31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号