五、系统架构-⾼性能架构设计及性能优化
⽬录
⼤型⽹站中的⼀个重要要素,有⼈说性能就是访问速度的快慢,也是⽤户的真实体验。⽤户从输⼊⽹站到按下回车键,看到页⾯的快慢,这就是性能。
性能测试
性能测试是性能优化的前提和基础,也是性能优化结果的检查和度量标准。
不同视⾓下的⽹站性能
⽤户视⾓:关注⽹站打开时间
开发视⾓:关注应⽤程序的性能,如响应时间、吞吐量、并发处理能⼒
运维视⾓:关注基础设施性能和资源利⽤率,如带宽、服务器硬件配置
性能指标
响应时间:指应⽤执⾏⼀个操作所需的时间,从发出请求到最后得到响应的时间。=> 直观反映系统的快慢
并发数:指系统能够同时处理请求的数量 => 反映系统的负载。
⽹站⽤户数 >= 在线⽤户数 >= 并发⽤户数
吞吐量:指单位时间内系统处理的请求数量 => 体现系统整体处理能⼒
每秒请求数、TPS(每秒事务数)、HPS(每秒HTTP请求数)、QPS(每秒查询数)、每秒页⾯数、每天访问量、每⼩时处理业务量、
性能计数器:描述服务器或OS性能的数据指标
包括系统负载、对象与线程数、内存使⽤、CPU使⽤、⽹络与磁盘IO等指标
性能测试
性能测试是⼀个总称,其通过对系统不断添加访问压⼒,来获得系统性能指标、最⼤负载能⼒、最⼤压⼒承受能⼒的过程。具体细分如下四类:
性能测试:初期是性能测试,查看系统性能指标是否符合要求;
负载测试:继续加压,是负载测试,查看系统的负载能⼒;
压⼒测试:继续加压,是压⼒测试,查看系统最⼤压⼒承受能⼒;继续加压,系统就凉凉;
稳定性测试:在特定软硬件、⽹络环境下,给系统添加⼀定压⼒,使其运⾏⼀段时间,以检测系统是否稳定
响应时间与并发⽤户数的关系:
性能测试报告
给出并发数、响应时间、TPS(每秒事务数)、错误率、资源占⽤情况:
性能优化策略
sql优化的几种方式性能分析(看⽇志、查监控、看代码、看SQL) =》性能优化(前端、后端、存储)
前端性能优化
先缓存、再压缩、最后改代码
开启缓存
浏览器缓存
利⽤HTTP协议的Cache-Control(缓存控制策略)和Expires(设置失效时间)头来控制缓存,这样在浏览器缓存后,下次直接从缓存中读取,即可加速访问速度。如下图所⽰的memory cache和disk cache:
CDN加速
CDN(Content Distribute Network,内容分发⽹络):本质是⼀个缓存,部署在⽹络提供商的机房,使⽤户在请求⽹站服务时,可以从距离⾃⼰最近的⽹络提供商机房获取数据(指静态资源)。
反向代理缓存
在反向代理服务器缓存⽤户请求的静态资源:
启⽤压缩
对html、css、JavaScript启⽤Gzip压缩,压缩率很⾼,可以有效减少请求传输时间。
实现⽅式:
Nginx启⽤GZip压缩
后端应⽤程序也可以启⽤压缩,⽐如pjl-comp-filter
SpringBoot 2.0.0+通过参数配置即可:abled
改代码
减少http请求次数
每次HTTP需建⽴连接才能传输,减少请求次数,即可提⾼访问性能。
主要⼿段:
前端合并CSS、JavaScript、图⽚:就像webpack打包⼀样,最终只有⼏个JS、⼏个CSS、⼏张图⽚
后端合并接⼝:有些接⼝设计不合理,相关数据可以考虑合并到⼀个接⼝中返回
CSS放在页⾯最上⾯,JS放在页⾯最下⾯
CSS放在最上⾯,可以快速进⾏页⾯渲染(⽤户更快看到页⾯显⽰出来);JS放在页⾯最下⾯,防⽌加载JS阻塞页⾯。减少Cookie传输
Cookie会包含在request和reponse中,太⼤的Cookie会影响数据传输速度。
解决办法:
慎重考虑Cookie中保存的数据,⽐如有些数据是不是可以存储来localStorage中
避免静态资源请求时发送Cookie
后端性能优化
分布式缓存
⽹站性能优化第⼀定律:使⽤缓存优化性能。
可以考虑各种分布式缓存,⽐如Redis、Memcached、JBoss Cache等。
异步操作(消息队列)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论