LAMP源于德国杂志《c'tMagazine》。MichaelKunze于1990年首次将这些项目结合起来创建了首字母缩写词LAMP。尽管这些组件从一开始就不是设计用来一起使用的,但是这些开源软件很容易获得并且可以免费获得。这导致这些组件经常一起使用。在过去的几年里,这些组件的兼容性不断提高,一起的应用场景也变得非常普遍。为了改善不同组件之间的协作,已经创建了某些扩展功能。目前,几乎所有的Linux发行版都默认包含“LAMPstack”产品。这些产品构成了一个强大的网络应用平台。LAMP平台由分层结构中的四个组件组成。每一层都提供了整个软件堆栈的关键部分:Linux:Linux是最低层并提供操作系统。事实上,所有其他组件也都在Linux上运行。然而,它不一定限于Linux,如果需要,其他组件也可以在Microsoft?Windows?、MacOSX或UNIX?上运行。Apache:下一个最低级别是Apache,它是一个Web服务器。Apache提供了用户获取网页的机制。Apache是一个稳定的关键任务服务器,被Internet上超过65%的网站用作Web服务器。PHP组件实际上在Apache中,可以使用Apache和PHP创建动态页面。MySQL:MySQL提供LAMP系统的数据存储端。使用MySQL,您将获得一个非常强大的数据库,适合运行大型复杂站点。在一个Web应用中,所有的数据、产品、账户等各类信息都存储在这个数据库中,可以通过SQL语言方便地进行查询。PHP:PHP是一种简单而有效的编程语言,充当将LAMP系统的所有其他组件粘合在一起的粘合剂。您可以使用PHP编写动态内容来访问MySQL数据库中的数据以及Linux提供的一些功能。【检测工具】为了得到完整的调试结果,推荐使用ApacheBench或httperf等软件。如果您对非基于LAMP的服务器测试感兴趣,我建议您使用微软的免费软件:WebApplicationStressTool(需要NT或2000)。(其他服务器测试工具)检测Apache,使用topd1显示所有进程的CPU和内存情况。另外,还用到了apachectlstatus命令[硬件优化]1.升级硬件的一般规则:对于PHP脚本,主要瓶颈是CPU,对于静态页面,瓶颈是内存和网络。平均400Mhz奔腾机器可以通过静态页面下载使T3租用线路(45Mbps)饱和。2、使用hdparm优化磁盘一般可以提高IDE磁盘读写性能200%,但对SCSI硬盘也有效。(不同类型硬盘对比)【策略优化】3、Apache处理PHP脚本的速度比静态页面慢2-10倍,所以尽量多用静态页面,少用脚本。4、PHP脚本如果没有缓冲,每次调用都需要编译。因此,安装PHP缓冲产品可以提高性能25-100%。5、如果你使用Linux系统,建议升级内核到2.4,因为静态页面由内核提供服务。6、另一种缓冲技术是利用HTML缓冲输出不经常修改的PHP页面。7、不要在Web服务器上运行X-Windows,关闭不需要的正在运行的进程。8.能用文字就不要用图片,图片尽量缩小。9.分散负载,将数据库服务器放在另一台机器上。使用另一台低端机器来提供图片和HTML页面。如果所有静态页面都在另一台服务器上处理,可以将httpd.conf中的KeepAlives设置为off,以减少断开连接的时间。10、以上方法均针对单机。如果觉得系统还是不够快,可以使用集群、负载均衡、缓冲等技术。如何使用Squid作为缓冲区来配置Squid。【编译优化】11.将基于文件的会话切换为基于共享内存的会话。编译PHP时使用--with-mm选项,在php.ini中设置setsession.save_handler=mm。这个简单的修改将会话管理时间缩短了一半。12、使用最新版本的Apache,将PHP编译进去,或者使用DSO方式代替CGI方式。13、编译PHP时,建议使用以下参数:--enable-inline-optimization--disable-debug[配置优化]14、修改httpd.conf:#关闭DNS查找,PHP脚本只取IP地址HostnameLookupsoff15。如果网络拥堵,CPU资源不够用。使用PHP的HTML压缩函数:output_handler=ob_gzhandlerPHP4.0.4的用户不要使用它,因为存在内存泄漏问题。16.修改httpd.conf中的SendBufferSize为你最大页面文件的大小。增加内核的TCP/IP写入缓冲区大小。17、使用持久连接数据库时,MaxRequestsPerChild不要设置太大。【第三方软件优化】18.如果喜欢从修改Apache源码入手,可以安装lingerd。页面生成并发送后,每个Apache进程都会在客户端连接上浪费一些时间。Lingerd可以接管这项工作,让Apache快速服务下一个客户端请求。19.如果你足够勇敢,你也可以使用SiliconGraphics的AcceleratedApache补丁。这个项目可以让Apache1.3快10倍,让Apache2.0快4倍。安装PHP缓存产品可以将性能提高25-100%。[Linux系统优化]1、清理服务器磁盘碎片:无论Linux文件系统使用什么文件格式(ext3、JFS、XFS、ReiserFS)或硬盘类型(IDE、SCSI),文件系统都会倾向于碎片化。ext3、JFS等高级文件系统可以减少文件系统的碎片化,但并没有消除碎片化。在繁忙的数据库服务器中,随着时间的推移,文件碎片会降低硬盘性能,只有在从硬盘读取数据或向硬盘写入数据时才会注意到这一点。时间长了,你会发现每个磁盘上确实堆积了很多垃圾文件,释放磁盘空间可以帮助系统更好地工作。在Linux中对磁盘进行碎片整理的最佳方法是进行完整备份,重新格式化分区,然后从备份中恢复文件。但是对于7×24小时工作的关键任务服务器来说就比较困难了。Kleandisk是一种高效的磁盘清理工具。它可以将磁盘上的文件分成不同的“组”。向上。核心文件是软件运行不正常时产生的文件。它对软件开发人员有用,但对其他用户(如电子邮件服务器)没有任何意义。所以,如果没有软件开发的需要,看到core文件就可以删掉。2.启用硬盘DMA。目前使用的IDE硬盘基本都支持DMA66/100/133(直接内存读取),但是linux发行版安装后一般都没有启用。可以在/etc/rc.d/rc.local的末尾添加一行:/sbin/hdparm-d1–x66-c3-m16/dev/hda这样每次开机后,硬盘的DMA磁盘会打开,无需每次都手动设置。可以使用命令:hdparm-Tt/dev/hda来测试比较添加前后。3、调整缓冲区刷新参数Linux内核中包含了一些系统运行状态的可配置参数。可以通过调整/proc/sys/vm/bdflush文件来调整缓冲区刷新参数。这个文件的格式如下:#cat/proc/sys/vm/bdflush30646425650030006000每一列都是一个参数,其中最重要的是前几个参数。第一个数字是当“脏”缓冲区达到这个数字时强制bdflush进程刷新硬盘,第二个数字是bdflush进程每次刷新多少个脏块。所谓脏块就是必须写入磁盘的缓存块。下一个参数是bdflush每次允许多少内存块排队到空闲缓冲块列表中。以上数值是RHEL4.0中的默认值。可以通过两种方式修改:(1)使用命令#echo"100128128512500030006000">/proc/sys/vm/bdflush,将此命令添加到/etc/rc.d/rc.local文件中。(2)在/etc/sysctl.conf文件中添加以下行:vm.bdflush=100128128512500030006000以上设置增加了缓冲区大小并降低了bdflush启动的频率。VFS的缓冲区刷新机制是Linux文件系统高效的原因之一。4、优化输入输出I/O程序对Linux系统性能也很重要,网络硬件I/O对服务器尤为重要。现在大多数Linux服务器都使用10/100Mb以太网。如果您的网络负载很重,您可以考虑使用千兆以太网卡。如果没有能力购买千兆网卡:可以使用多张网卡,成为一张IP地址相同的虚拟网卡。这种技术,在Linux中,这种技术叫做Bonding。Bonding在Linux2.4及以上内核中已经包含,编译时只需要在网络设备选项中选择Bondingdriversupport即可,如图1所示。当然前提是使用Bonding技术配置双网cardbonding就是两块网卡芯片组型号相同,都有独立的BIOS芯片。然后,重新编译内核,重启电脑,执行如下命令:#ismodbonding#ifconfigeth0down#ifconfigeth1down#ifconfigbond0ipaddress#ifenslavebond0eth0#ifenslavebond0eth1现在两块网卡已经合二为一了。这可以改善集群节点之间的数据传输。绑定是服务器更好的选择。在没有千兆网卡的时候,使用两块100M网卡做bonding,可以大大提高服务器和交换机之间的带宽。但是需要将交换机上连接bonding网卡的两个子端口设置为映射到同一个虚拟接口。编辑/etc/modules.conf文件,添加如下内容,使系统在启动时加载Bonding模块。aliasbond0bondingoptionsbond0mode=0“mode”的值表示工作模式。模式有0、1、2、3四种,这里设置为0。Bonding工作在LoadBalancing(round-robin)模式,即两块网卡同时工作。理论上,Bonding可以提供两倍的带宽。Bonding运行在网卡的混杂(Promisc)模式下,它将两个网卡的MAC地址修改为相同。混杂模式是指网卡不再只能接收目的硬件地址为自己MAC地址的数据帧,而是可以接收网络上的所有帧。5.减少虚拟终端数量。Linux安装后,系统默认有6个虚拟终端,即CTRL+ALTF1~F6这六个。作为服务器,你可以关闭其中的四个,只留下CTRL+ALTF1~F2,节省大约4MbytesMemory,但是这样一来,X-Window就会从原来的CTRL+ALTF7变成CTRL+ALTF3。修改/etc/inittab,添加#fontsizemingetty3~6。6、关闭一些不用的服务Linux服务器在启动时需要启动很多系统服务,它们为本地和网络用户提供Linux系统功能接口,直接面向应用程序和用户。提供这些服务的程序由在后台运行的守护进程执行。守护进程是一个长期存在的进程。它们独立于控制终端,周期性地执行某些任务或等待某些事件的发生。它们通常在系统引导和加载时启动,并在系统关闭时终止。linux系统中有很多守护进程,大部分服务器都是用守护进程实现的。比如Web服务http等等。守护进程同时完成许多系统任务,例如作业计划进程crond、打印进程lqd等。一些书籍资料也将守护进程称为:“服务”。关闭服务的方法可以参考作者的文章:深入理解Linux守护进程。
