一、网站性能测试(确定优化标准)
不同视角下的网站性能
用户视角下
主要包括:从打开浏览器到看到想要的内容。终端、不同浏览器、不同网络,这些对延迟的影响可能远大于网站服务器请求时间。
常用方法:前端优化、CDN、反向代理。
开发视角下
主要包括:响应延迟、系统吞吐量、并发处理能力、系统稳定性等技术指标。
常用方法:缓存、集群、异步、代码优化。
运维视角下
主要包括:设施性能和资源的利用率,比如带宽、服务器硬件配置等。
常用方法:建设优化骨干网络、使用高性价比定制服务器、虚拟服务器。
性能测试的指标
响应时间:毫秒
并发数:同时处理请求数目,体现负载特性。
吞吐量:单位时间内系统请求处理量。
常用单位:请求数/秒、页面数/秒、访问人数/天、TPS(每秒事物数)、HPS(每秒HTTP请求数)、QPS(每秒查询数)。
服务器性能:CPU、内存、线程数、磁盘、网络I/O等指标。
性能测试方法
性能测试
是否可以到达预期性能。
负载测试
增加并发,找到安全临界值。
压力测试
超过安全负载,找到系统崩溃临界值。
稳定性测试
业务运行一段时间,观察稳定性。
性能测试报告
性能优化策略
性能分析
环节分析,排查出瓶颈,定位优化。
性能优化
根据网站分层架构,可分为如下三种:前端优化、服务器优化、存储优化。
二、web前端性能优化
浏览器访问优化
(1)减少HTTP请求
http协议是无状态的应用协议。
方法:合并CSS、合并JS、合并图片等。
(2)使用浏览器缓存
(3)启用压缩
(4)CSS、JS引用位置
下载完全部CSS才会渲染,所以CSS放在顶部。JS加载完就会调用,所以放到底部。
(5)减少Cookie传输
建议静态资源独立域名访问
CDN加速
反向代理
三、服务器性能优化
服务器性能优化第一定律:优先使用缓存。
分布式缓存
缓存的基本原理:Hashcode。
合理使用缓存
(1)频繁修改的数据(不使用)
(2)没有热点的访问(不使用)
(3)数据不一致的脏读(不使用)
(4)缓存可用性:缓存雪崩
(5)缓存预热:存放热点数据
(6)缓存穿透:请求不存在的缓存,导致直接查询数据库。
分布式缓存架构
Memcached与Redis
异步操作
使用MQ系列、kafka等。
使用集群
代码优化
(1)多线程:启用线程数=[任务执行时间/(任务执行时间-IO等待时间)]*CPU内核数。
解决线程安全主要手段:1、将对象设计为无状态对象;2、使用局部对象;3、并发访问资源时使用锁。
(2)资源复用
方法:单例模式、对象池。
(3)数据结构
程序=数据结构+算法;
(4)垃圾回收:JVM为比较经典的方法。
四、存储性能优化
机械硬盘VS固态硬盘
B+树 vs LSM树
RAID vs HDFS