网站性能优化基础

架构 Quarterback 66℃ 0评论

本文主要讨论这几个问题:

  1. 性能包括哪些方面?
  2. 性能指标有哪些?
  3. 性能瓶颈会存在哪些地方?
  4. 性能优化的策略和手段
  5. 网站性能优化

1. 性能包括哪些方面?

  • 执行速度
    • 程序的反映是否迅速,响应时间是否足够短
  • 内存分配
    • 内存分配是否合理,是否过多地消耗内存或者存在泄漏
  • IO效率
    • 网络IO或者磁盘IO速度是否迅速、稳定,是否能提供足够的吞吐量
  • 启动时间
    • 程序从运行到可以正常处理业务需要花费多长时间
  • 负载能力
    • 当系统压力上升时,系统的执行速度,响应时间的上升曲线是否平缓

2. 性能指标有哪些?

  • 执行时间
    • 一段代码从开始运行到运行结束,所耗费的时间
  • CPU时间
    • 函数或者线程占用CPU的时间
  • 内存分配
    • 程序在运行时占用的内存空间
  • 磁盘吞吐量
    • 描述磁盘读写情况,单位时间内可以成功传输的数据数量
  • 网络吞吐量
    • 描述网络的使用情况,单位时间内可以成功传输的数据数量
  • 响应时间
    • 系统对某用户行为或者事件做出响应的时间。响应时间越短,性能越好

3. 性能瓶颈会存在哪些地方?

  • 磁盘I/O
    • 由于磁盘I/O读写的速度要比内存慢很多,特别是机械磁盘面对大量随机I/O的时候。
  • 网络操作
    • 对网络数据进行读写的情况与磁盘I/O类似,由于网络环境的不确定性,尤其是对互联网上数据的读写,网络操作的速度可能比本地磁盘I/O更慢
  • CPU
    • 对计算资源要求较高的应用,由于其长时间,不间断地大量占用CPU资源,那么对CPU的争夺将导致性能问题
  • 异常
    • 对Java应用来说,异常的捕获和处理时非常消耗资源的,如果程序高频率地进行异常处理,则整体性能更会有明显下降
  • 数据库
    • 大部分应用程序都离不开数据库吗,而海量数据的读写操作可能是相当费时的,而应用程序可能需要等待数据库操作完成或者返回请求的结果集,那么缓慢的同步操作将成为系统瓶颈
  • 锁竞争
    • 对高并发程序来说,如果存在激烈的锁竞争,锁竞争将会明显增加线程上下文切换的开销,而这些开销都是与应用需求无关的系统开销,白白占用宝贵的CPU资源
  • 内存
    • 一般来说,只要应用程序设计合理,内存在读写速度上不太可能成为性能瓶颈,除非应用程序进行了高频率的内存交换和扫描,但这些情况比较少见。使内存制约系统性能的最可能的情况是内存大小不足,与磁盘相比,内存的大小似乎小的可怜,这意味着应用软件只能尽可能将常用的核心数据读入内存

4. 性能优化的策略和手段

  • 性能监控
    • 是一种以非侵入方式收集或查看应用运行性能数据的活动
    • 监控通常是指一种在生产,质量评估或者开发环境中实施的带有预防或主动性的活动
    • 当应用干系人报出性能问题却没有足以定位根本原因的线索时,首先会进行性能监控,随后是性能分析
  • 性能分析
    • 是一种以侵入方式收集运行性能数据的活动,它会影响应用的吞吐量或响应性
    • 性能分析是对性能监控或对干系人所报问题的回应,关注的范围通常比性能监控更集中
    • 性能分析很少在生产环境中进行,通常是在质量评估,测试或开发环境中,常常是性能监控之后的行动
  • 性能调优
    • 性能调优是一种为改善应用响应性或吞吐量而更改参数,源代码或属性配置的活动
    • 性能调优通常是在性能监控或性能分析之后进行
  • 不要过早的优化
    • 不能为了“优化”而优化,优化的前提是存在性能问题,一定要以监控和分析为依据,不能靠自觉。优化的精力应该根据分析结果,放在最关键的方面。

5. 网站性能优化

  • 网站访问时一种B/S结构,即浏览器和服务器结构。用户通过浏览器发送对网站的访问请求,请求通过网络到达远程服务器,服务器接收到响应后进行处理,然后发送响应结果,响应结果再通过网络返回到用户的浏览器,浏览器解析响应报文将结果呈现给用户。因此网站优化,实际上就着眼于如下三个方面:
  • 1)数据在网络上传输的时间(即响应时间,客户端主机←→服务器)
    • 决定因素:发送的数据量,连接建立的次数,网络带宽等
  • 2)站点服务器处理请求并生成回应数据的时间
    • 决定因素:吞吐率(每秒处理请求数),服务器的并发策略,I/O模型,I/O性能,CPU核数,应用程序本身复杂度等
  • 3)浏览器本地计算和渲染的时间
    • 决定因素:浏览器采用的并发策略,样式渲染方式,脚本解释器的性能,页面大小,页面组件的数量,页面组件缓存状况,页面组件域名分布,域名DNS解析


喜欢 (0)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址