不同视角
用户眼中的性能: 客户的机器,浏览器,网络状况,通信协议,服务器处理时间,浏览器解析时间。另外 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等二进制序列化协议。
异步操作
集群
代码优化
多线程,资源复用,数据结构,垃圾回收
存储优化
来源:oschina
链接:https://my.oschina.net/u/2499806/blog/522449