`
xitong
  • 浏览: 6205079 次
文章分类
社区版块
存档分类
最新评论

动态内容为主的网站优化

 
阅读更多
分析和优化的过程
1.初期性能问题及处理
2.第二次优化
3.第三次优化
4.第四次优化
5.网站结构优化

1.初期性能问题及处理
——表现:早晨和下午访问高峰时,服务器频繁宕机,重启后的一段时间内能正常服务,过一会以后又变的响应缓慢,然后又宕机。
——检查:发现宕机前系统负载高,Apache httpd.conf配置最大用户数为1024
——处理:修改 httpd.conf配置文件,降到最大512 个用户数,仍然频繁宕机,又降到 256 个用户数,系统不宕机了,但是负载很高,站点访问极慢

初次优化

深入分析系统资源使用情况(vmstat,top,ps)

——结论:CPU资源时常耗尽,因此造成响应缓慢或者长时间没有响应,主要是用户进程消耗资源严重。
——原因:PHP程序没有使用代码加速,网站首页是个PHP程序,每次用户访问都要多次查询数据库,其他程序也没有Cache机制,数据库查询负荷过高。
——处理:安装配置turck-mmcache代码加速器,改写网站首页以及部分频繁访问的程序增加cache机制,减少数据库访问。

2.第二次优化

一段时间后,系统又开始不稳定,访问高峰时站点无法正常访问

分析系统资源使用状况,发现仍然是CPU耗尽后引起问题,但这次系统IO等待消耗的CPU资源比较大。
——原因:上次解决了CPU资源容易耗尽的问题,目前网站访问量增加了,apache进程数时常达到256个,导致内存使用殆尽,频繁使用交换内存,最终仍然导致CPU资源耗尽
—— 处理:把Apache配置中的KeepAlive特性关闭,进程数大量减少,基本保持在80个进程以内,还是会使用交换内存,但是服务正常了。


3.第三次优化

一段时间后,系统又开始不稳定,访问高峰时站点无法正常访问

分析发现还是CPU资源耗尽导致的原因。
——原因:程序频繁访问数据库,大量的SQL语句中有 where,order by 等子句,而大量的表没有建索引,导致MySQL数据库负荷过高,消耗CPU资源过高。
——处理:优化程序中的SQL语句,where和order by子句上的字段建索引,程序增加Cache机制,再次使服务恢复正常。

4.第四次优化

一段时间后,系统又开始不稳定,访问高峰时站点无法正常访问

分析系统资源使用状况,发现还是CPU耗尽造成的
——原因:数据库查询过多,大部分都是复杂查询,时常需要遍历全表
——处理:优化程序中的SQL语句,增加where子句上的匹配条件,减少遍历全部的查询。

5.网站结构优化
鉴于程序的优化空间越来越小,避免以后仍然出现问题,增加了一台专用数据库服务器
在后来的使用过程中,又陆续增加了1台Web前端服务器,和一台只用于读的MySQL数据库服务器



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics