大型网站技术架构--性能


不同视角

用户眼中的性能: 客户的机器,浏览器,网络状况,通信协议,服务器处理时间,浏览器解析时间。另外 1s左右 ,对用户来说是无区别的。

开发严重的性能:程序本身和相关子系统。响应延迟,系统吞吐量,并发处理能力,系统稳定性等。

运维人员:关注基础设施的资源和性能的利用率,合理利用,最优发挥(不浪费,不堵塞)


性能指标

响应时间:10000/n次时间和,除以10000/n。

并发数

吞吐量:TPS(每秒事务数),HPS(每秒请求数),QPS(每秒查询数) 。理论上讲 应该是个抛物线,峰值即为吞吐量值。


吞吐量,并发数,响应时间之间的关系 用高速公路形容很接近。车越少(并发数),资源越浪费(内存,硬盘,网络),车增多,开始吞吐量上升,到达峰值后会随之下降,直至瘫痪。


性能计数器:描述操作系统的性能指标(System Load,对象与线程数,内存使用,cpu使用,磁盘及网络io等指标)

测试方式

 性能测试:验证资源可接受范围

 稳定性测试:不均匀的施加压力,验证稳定性

 压力测试:超过安全负载的情况下,继续对系统施加压力,直至系统崩溃或者不能处理请求,来获取系统最大压力承受能力。

 负载测试:对系统不断增加并发,不断增加压力,直至系统或者应用多项指标达到临界值


性能优化

web前端,应用服务器,存储服务器性能优化。


Web前端优化

浏览器优化

1 减少http请求

2 使用浏览器缓存

3 启用压缩

4 css放在页面最上面,js放在页面最下面

5 减少cookie传输

CDN加速(Content Distribute Network 内容网络分发)

也是缓存,用户访问第一跳,当缓存了浏览器请求的资源时,直接从CDN返回。

最短路径访问方式

CDN缓存的一般是静态资源,如图片,文件,CSS,Script脚本,静态网页等(改善网页)

反向代理

正向代理(代理):客户端的代理,可以通过该代理实现不能访问 或者一些其他的功能

反向代理:部署的在服务器端的代理,客户请求的是代理服务器,代理服务再寻找真正的服务器

应用服务器性能优化

分布式缓存

缓存指的是 将数据放在访问速度较高的介质中

一方面访问速度快,另一方面防止重复计算

网站数据访问通常遵循二八定律,80%的用户访问20%的数据

合理使用缓存

频繁修改数据,没有热点访问的数据,数据不一致与脏读,缓存可用性,缓存预热,缓存穿透

缓存穿透:是指一直访问不存在的数据,一直无法缓存,一直访问数据库;解决办法,不存在的数据也缓存

分布式缓存

比较好的是Memcache

远程通信设计要考虑两方面要素:

1通信协议:TCP,UDP或是HTTP

2 通信序列化协议:xml,json,或者Google Protobuffer等二进制序列化协议。

异步操作

集群

代码优化

多线程,资源复用,数据结构,垃圾回收

存储优



你可能感兴趣的:(性能,测试,缓存,前端优化,服务器优化)