|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的小伙伴们!1、基于静态内容为主的网站优化案例
1.网站运转情况申明
硬件情况:1台IBMx3850办事器,单个双核Xeon3.0GCPU,2GB内存,3块72GBSCSI磁盘。
操纵体系:CentOS5.4。
网站架构:Web使用是基于LAMP架构,一切办事都在一台办事器上安排。
2.功能成绩征象及处置办法
征象形貌
网站在上午10点摆布和下战书3点摆布会见岑岭时,网页没法翻开,重启办事后,网站能在一段工夫内能一般办事,但过一会又变得呼应迟缓,最初网页完全没法翻开。
反省设置
起首反省体系资本形态,发明办事呈现妨碍时体系负载极高,内存基础耗尽,接着反省Apache设置文件httpd.conf,发明“MaxClients”选项值被设置为2000,而且翻开了Apache的KeepAlive特征。
处置办法
依据下面的反省,开端判别是Apache的”MaxClients“选项设置不妥引发的,由于体系内存唯一2GB巨细,而“MaxClients”选项被设置为2000,过量的用户会见历程耗尽了体系内存;然后,修正httpd.conf设置文件的“MaxClients”选项,将此值由2000降到1500;持续察看发明,网站仍是频仍宕机,因而又将“MaxClients”选项值降到1024,察看一段工夫发明,网站办事宕机工夫距离加长了,不像之前那末频仍,可是体系负载仍是很高,网页会见速率极慢。
3.第一次剖析优化
既然是由体系资本耗尽招致的网站办事得到呼应,那末就深切剖析体系资本的利用情形,经由过程uptime、vmstat、top、ps等下令的团结利用,得出以下结论:
结论形貌
体系均匀负载很高,经由过程uptime输入的体系“loadaverage”值都在10以上,而CPU资本也损耗严峻,这是形成网站呼应迟缓或长工夫没有呼应的次要缘故原由,而招致体系资本损耗太高的次要根据是用户历程损耗资本严峻。
缘故原由剖析
经由过程top下令发明,每一个Apache子历程损耗快要6~8MB摆布内存,这是不一般的。依据履历,在一般情形下每一个Apache子历程损耗的内存在1MB摆布,分离Apache输入日记发明,网站首页会见频次最高,也就是说首页步伐代码大概存在成绩。因而反省首页的PHP代码,发明首页的页面十分年夜,图片良多,而且由全静态的步伐构成,如许每次用户会见首页都要屡次查询数据库,而查询数据库是个十分泯灭CPU资本的历程,而且首页PHP代码也没有响应的缓存机制,每一个用户哀求都要从头举行数据库查询操纵,数据库查询负荷有多高不可思议。
处置办法
修正首页PHP代码,缩减页面巨细,而且对会见频仍的操纵增添缓存机制,只管削减步伐对数据库的会见。
4.第二次剖析优化
经由过程后面复杂优化,体系办事宕机征象呈现次数削减良多,可是在会见岑岭时网站偶然还会没法一般会见。此次仍旧从剖析体系资本利用情况动手,发明体系内存资本损耗过年夜,而且磁盘I/O有守候成绩,因而得出以下结论:
缘故原由剖析
内存损耗过年夜,一定是用户会见历程数过量招致的,在没有优化PHP代码之前,每一个Apache子历程损耗6~8MB内存,假如设置Apache的最年夜用户数为1024,那末内存耗尽是一定的,当物理内存耗尽时,假造内存就会启用,频仍地利用假造内存,一定会呈现磁盘I/O守候成绩,终极招致CPU资本耗尽。
处置办法
经由过程下面对PHP代码的优化,每一个Apache子历程损耗的内存资本基础保持在1~2MB摆布,因而修正Apache设置文件httpd.conf中的”MaxClients”选项值为“600”,同时把Apache设置中的“KeepAlive”特征封闭,如许Apache历程数大批削减,基础保持在500~600之间,固然偶然也会利用假造内存,可是Web办事一般了,办事宕机成绩也很少呈现了。
5.第三次剖析优化
经由前两次的优化,网站基础运转一般,可是在会见岑岭时偶然还会呈现站点没法会见得征象,持续举行成绩剖析,经由过程下令检察体系资本,发明还是CPU资本耗尽招致的,可是与前两次又有所分歧:
缘故原由剖析
经由过程察看背景日记,发明PHP步伐有频仍会见数据库的操纵,大批的SQL语句中有where,orderby等子句;同时,数据库查询过量,年夜局部都是庞大查询,一样平常都必要遍历全表,而大批的表没有创建索引,如许的步伐代码招致MySQL数据库负荷太高,而MySQL数据库和Apache安排在统一台办事器上,这也是招致办事器损耗CPU资本太高的缘故原由。
处置办法
优化步伐中的SQL语句,增添where子句上的婚配前提,削减遍历全体的查询,同时在where和orderby子句的字段上创建索引,而且增添步伐缓存机制,经由过程此次优化,网站运转基础处于一般形态,再也没有呈现宕机的征象。
6.第四次优化剖析
经由过程后面三次优化今后,网站在步伐代码、操纵体系、Apache等方面的优化空间愈来愈小,要制止呈现办事气宕机征象,而且包管网站不乱、高效、疾速地运转,能够从网站布局长进行优化,也就是将Web和数据库分别安排,能够增添一台公用的数据库办事器,独自安排MySQL数据库。跟着会见量的增添,假如前端没法满意会见哀求,还能够增添多台Web办事器,Web办事器之间举行负载平衡安排,办理前端功能瓶颈;假如在数据库端还存在读写压力,还能够持续增添一台MySQL办事器,将MySQL举行读写分别安排,如许一套高功能、高牢靠的网站体系就构建起来了。
2、基于静态、静态内容分离的网站优化案例
1.网站运转情况申明
硬件情况:两台IBMx3850办事器,单个双核Xeon3.0GCPU,4GB内存,3块72GBSCSI磁盘。
操纵体系:CentOS5.4。
网站架构:Web使用是基于J2EE架构的电子商务使用,Web端使用办事器是Tomcat,接纳MySQL数据库,Web和数据库自力安排在两台办事器上。
2.功能成绩征象和处置办法
征象形貌
网站会见岑岭时,网页没法翻开,重启Java办事后,网站能够一般运转一段工夫,但过一会又变得呼应迟缓,最初网页完全没法翻开。
反省设置
起首反省体系资本形态,发明办事呈现妨碍时体系负载极高,CPU满负荷运转,Java历程占用了体系99%的CPU资本,但内存资本占用不年夜;接着反省使用办事器信息,发明只要一个Tomcat在运转Java步伐;接着检察Tomcat设置文件server.xml,发明server.xml文件中的参数都是默许设置,没有举行任何优化。
处置办法
server.xml文件的默许参数必要依据使用的特征举行得当的修正,比方能够修正“connectionTimeout“、“maxKeepAliveRequests”、“maxProcessors”等几个Tmcat设置文件的参数,得当加年夜这几个参数值。修正参数值后,持续察看发明,网站办事宕机工夫距离加长了,不像之前那末频仍,可是Java历程损耗CPU资本仍是很严峻,网页会见速率极慢。
3.第一次剖析优化
既然Java历程损耗CPU资本严峻,那末必要检察究竟是甚么招致Java损耗资本严峻,经由过程lsof、netstat下令发明有大批的Java哀求守候信息,然后检察Tomcat日记,发明大批报错信息、日记提醒和数据库毗连超时,终极没法毗连到数据库,同时,会见网站静态资本,也没法会见,因而得出以下结论:
缘故原由剖析
Tomcat自己就是一个Java容器,是利用毗连/线程模子处置营业哀求的,次要用于处置Jsp、servlet等静态使用,固然它也能看成HTTP办事器,可是处置静态资本的效力很低,远远比不上Apache或Nginx。夙昔面察看到的征象剖析,能够开端判别是Tomcat没法实时呼应客户真个哀求,进而招致哀求行列愈来愈多,直到Tomcat完全溃散。关于一个一般的会见哀求来讲,办事器吸收到哀求后,会把哀求交给Tomcat去向理,Tomcat接着实行编译、会见数据库等操纵,然后把信息前往给客户端,客户端吸收到信息后,Tomcat就封闭这个哀求链接,如许一个完全的会见历程就停止了。而在高并发会见形态下,良多的哀求刹时都交给Tomcat处置,如许Tomcat还没有完成第一个哀求,第二个哀求就来了,接着是第三个,等等,如许越积越多,Tomcat终极得到呼应,Java历程就会处于僵逝世形态,资本没法开释,这就是基本缘故原由。
处置办法
要优化Tomcat功能,必要从布局长进行重构,起首,到场Apache撑持,由Apache处置静态资本,由Tomcat处置静态哀求,Apache办事器和Tomcat办事器之间利用Mod_JK模块举行通讯。利用Mod_JK模块的优点是:它能够界说具体的资本处置划定规矩,依据静态、静态网站的特性,将静态资本文件全体交给Apache处置,而静态哀求经由过程Mod_JK模块传给Tomcat去向理,经由过程Apache+JK+Tomcat的整合,能够年夜幅度进步Tomcat使用的功能。
4.第二次剖析优化
经由后面的优化办法,Java资本偶然会增高,可是一段工夫后又会主动下降,这属于一般形态,而在高并发会见情形下,Java历程偶然还会呈现资本上升没法下落的情形,经由过程检察Tomcat日记,综合剖析得出以下结论:
要取得更高、更不乱的功能,单一的Tomcat使用办事器偶然会没法满意需求,因而要分离Mod_JK模块运转基于Tomcat的负载平衡体系,如许前端由Apache卖力用户哀求的调剂,后端又多个Tomcat卖力静态使用的剖析操纵,经由过程将负载均分派给多个Tomcat办事器,网站的全体功能会有一个质的提拔。
1、几种典范使用对体系资本利用的特性
1.1以静态内容为主的Web使用
这类使用的一个次要特性是小文件占多数,而且读操纵频仍,Web办事器通常是Apache或Nginx,由于这两个HTTP办事器对静态资本的处置十分敏捷和高效。在Web会见量不年夜时,能够间接对外供应办事,可是在有很年夜并发哀求时,单一的Web办事没法支持大批的客户端会见,此时就必要由多台Web办事器构成的负载集群体系。为了完成更高效的会见,在最前端还能够搭建Cache办事器,也就是将静态资本文件缓存到操纵体系内存中间接举行读操纵,由于间接从内存读取数据要比从硬盘读数据效力高良多,以是在Web前端搭建Cache办事器能够年夜年夜进步并发会见功能。经常使用的Cache软件有Squid、Varinsh等。
Cache办事器固然能够进步会见功能,但请求办事器有很年夜的内存,当体系内存充分时,能够减缓磁盘随机读的压力;当内存太小大概内存不敷时,体系就会利用假造内存,而假造内存的利用会引发磁盘I/O的增年夜,当磁盘I/O增年夜时,CPU的开支也随之增添。
在高并发会见时,还存在别的一个成绩,就是收集带宽瓶颈,假如客户端会见量很年夜且带宽不敷,就会堵塞收集,影响会见,因而,在构建基于Web的收集使用时,收集带宽也是必需思索的一个要素。
1.2以静态内容为主的Web使用
这类使用的一个特性是频仍地实行写操纵,比方Java、PHP、Perl、CGI等,会招致CPU资本损耗严峻。由于静态步伐的实行要举行编译、读取数据库等操纵,而这些操纵城市损耗CPU资本,因而,一个基于静态步伐的Web使用,应当选择多本性能较高的CPU,这将对体系全体功能的进步有很年夜匡助。
基于静态内容的Web使用在高并发会见时,体系实行的历程数会良多,因而要注重负载的分派。因为过量的历程会损耗大批体系内存,假如内存不敷,就会利用假造内存,而假造内存的增添会招致磁盘写操纵频仍,进而损耗CPU资本,因而要追求一个硬件资本和软件资本的均衡点,比方设置较年夜的内存和高功能的CPU,而在软件方面可经由过程如Memcached加速步伐与数据库之间的会见效力。
1.3数据库使用
数据库使用的一个次要特性是损耗内存和磁盘I/O,而对CPU的损耗并非很年夜,因而最基础的做法就是为数据库办事器设置较年夜的内存和读写较快的磁盘阵列,比方,能够为数据库办事器的磁盘选择RAID5、RAID01等RAID级别。将WebServer与DBServer分别也是优化数据库使用的一个经常使用做法。假如客户端用户对数据库的哀求过年夜,还能够思索接纳数据库的负载平衡计划,经由过程软件负载平衡或硬件负载平衡的体例进步数据库会见功能。
关于数据库中过年夜的表,能够思索举行拆分,也就是将一个年夜表拆分红多个小表,再经由过程索引举行联系关系处置,如许能够制止查询年夜表酿成的功能成绩,由于表太年夜时,查询遍历全表会形成磁盘读操纵激增,进而呈现读操纵守候的情形。同时,数据库中查询语句庞大,大批的where子句,orderby、groupby排序语句等,简单使CPU呈现瓶颈。最初,当数据更新时,数据更新量年夜或更新频仍,也会形成磁盘写操纵激增,呈现写操纵的瓶颈。这些也应当在步伐代码中制止。
在一样平常使用中,另有一种***能够明显进步数据库办事器的功能,那就是读写分别。同时对数据库举行读和写的操纵,是效力极低的一种会见体例,较好的做法是依据读、写的压力和需求,分离创建两台布局完整不异的数据库办事器,将卖力写的台办事器上的数据,准时复制给卖力读的办事器,经由过程读写的合作进步体系全体功能。
经由过程缓存体例也能够进步数据库的功能,缓存是数据库或工具在内存中的一时容器,利用缓存可年夜幅削减数据库的读取操纵,改由内存来供应数据。好比能够在WebServer和DBServer之间增添一层数据缓存层,在体系内存中创建被频仍哀求工具的正本,如许一来,不会见数据库也可为步伐供应数据,如今使用很普遍的Memcached就是基于这个道理。
1.4软件下载使用
静态资本下载办事器的次要特性是带宽损耗严峻,同时对存储功能请求也很高,鄙人载量极高时,能够接纳多台、多点办事器分流情势分管下载负荷,在HTTP办事器方面,从高功能角度和削减办事器安排的角度思索,保举接纳LighttpdHTTP办事器,而不是接纳传统的Apache办事器,缘故原由是Apache利用堵塞形式的I/O操纵,功能绝对较差,并发才能无限,而Lighttpd利用异步I/O体例,处置资本下载的并发才能远远凌驾Apache。
1.5流媒体办事使用
流媒体次要使用在视频集会、视频点播、近程教导、在线直播等方面,这类使用次要的功能瓶颈是收集带宽和存储体系带宽(次要是读操纵),面临海量用户,怎样保证用户吸收到高明晰的、流利的画面,怎样最年夜限制地节俭收集带宽,这些都是流媒体使用要办理的主要成绩。
关于流媒体办事器的优化,能够从存储战略、传输战略、调剂战略、代办署理办事器缓存战略及流媒体办事器的系统布局计划等几个方面举行思索。在存储方面,必要对视频的编码格局举行优化,进而节俭空间,优化存储功能;在传输方面,能够接纳智能流手艺把持发送的速度,最年夜水平保证用户寓目视频的流利性;在调剂方面,能够接纳静态调剂和静态调剂分离的***;在代办署理办事器方面,能够接纳分段缓存、静态缓存等办理战略;在流媒体系统布局方面,能够接纳内存池和线程池手艺改良内存损耗和线程过量对功能酿成的影响。
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的好朋友们! |
|