网站优化
-
前端优化
- 合并js,css,图片等资源,减少http请求次数
- 开启http缓存
- 使用CDN缓存资源和静态页面,CDN最好使用独立域名(防止cookie占用流量,一个域名浏览器有并发请求限制)
- css放在文件头部,js放在文件尾部。为了加快显示页面
- 尽量减少cookie的数据,数据尽量放在session服务中,减少通信数据量
-
后端优化
依次按下面步骤来优化后端- 把应用服务、数据库服务、文件服务部署在独立的服务器
- 数据库增加主备,增加数据读取效率和容灾能力
- 增加缓存,减少数据库访问压力
- 如果业务比较复杂的话,对业务进行纵向拆分,分成多个应用,独立部署
- 搭建应用服务器集群。使用DNS、Nignx反向代理,LVS(通过keepalived实现lvs主备,提供高可用性;或者使用ali-lvs集群)
- 搭建分布式缓存集群。使用Memcached或者Redis
- 数据库分库分表(单表比较大的话会影响存取效率,太大的话甚至无法存取)。使用TDDL
- 使用分布式文件系统存储更大、更多的文件,在文件比较大时,分布式文件系统效率也更高。使用OSS
- SOA,水平拆分业务,使用分布式服务治理应用。使用Dubbo或者HSF
- 使用分布式消息队列集群,使用分布式服务后,需要使用消息队列来进一步提升可用性、效率、削峰等。使用MetaQ
当出现性能问题的时候我们该怎么做?
一、CPU过高
1、 us过高
- 死循环
- 大计算
2、sy过高
- 进程间切换
- 线程间切换
- 锁争用
二、内存消耗过高
1、 及时释放不必要的对象
2、 使用对象缓存池缓冲
3、 采用合理的缓存失效算法(关注弱引用、幽灵引用)
三、磁盘IO过高
1、 异步读写文件
2、 批量读写文件
3、 使用缓存技术
4、 采用合理的文件读写规则
四、网络
1、增加宽带流量
五、资源消耗不多但程序运行缓慢
1、使用并发包,减少锁竞争
2、对于必须单线程执行的使用队列处理
3、大量分布式处理
六、未充分利用硬件资源
1、 修改程序代码,使用多线程处理
2、 修正外部资源瓶颈,做业务拆分
3、 使用缓存