[性能优化]-01调优指标

骑猪看日落 2023-06-06 14:29 78阅读 0赞
  1. 一、为什么调优?
  2. 1、随着时间积累问题凸显。机器定时宕机,重启后恢复正常,以此循环
  3. 2、搞活动并发量导致。不知道性能的极限,并发量导致性能瓶颈
  4. 3、定时炸弹。上线后一直半死不活,无人问津。
  5. 4、(最直接的目的)提高系统性能,缩减服务器数量,节省公司资源
  6. 二、什么时候调优?
  7. 1、开发初期
  8. 无需刻意优化,影响开发进度,带来新问题
  9. 保证有效编码。如,减少磁盘IO、降低锁竞争、高效算法、设计模式应对复杂场景(折扣、红包活动)
  10. 2、编码完成
  11. 压测,通过工具分析系统性能指标,是否符合预期范围
  12. 3、上线后
  13. 根据实际情况,根据工具(日志监控、性能统计日志),观察系统性能问题并及时修复
  14. 三、如何调优/调优的指标?
  15. 1、哪些计算机资源,会成为系统的性能瓶颈?
  16. cpu,有些应用需要大量计算,一直霸占cpu,导致其他资源无法争夺cpu而响应缓慢。
  17. 如,
  18. 代码循环递归
  19. 正则表达式的回溯问题
  20. jvm频繁 full gc
  21. 多线程造成的大量线程切换
  22. 内存
  23. java程序通过jvm对内存进行管理。jvm中的堆用于存放java创建的对象
  24. 堆内存读写速度快,不存在读写性能瓶颈,但是内存存储空间有限,当内存空间被占满,对象无法回收,会遇到内存溢出、内存泄漏问题。
  25. 磁盘IO,存储空间大,读写慢,可以通过SSD固态硬盘来优化。读写速度 内存 > SSD固态硬盘 > 磁盘
  26. 网络,若传输数据大、并发量大,需要增加网络带宽。
  27. 异常,java应用抛出异常 需要构造异常栈,对于异常的捕获和处理 非常消耗系统性能,尤其是并发环境。
  28. 数据库,大量数据库读写,会导致磁盘IO瓶颈。
  29. 锁竞争
  30. 为避免多线程操作共享资源,需要加锁保证原子性。同时,锁的使用 带来上下文切换,导致性能开销
  31. jdk1.6后,java为降低锁竞争带来的上下文切换,对jvm内部锁做优化:偏向锁、自选锁、轻量级锁、锁粗化、锁消除。
  32. 合理的使用锁资源,需要了解更多的操作系统知识、java多线程编程基础
  33. 2、系统性能的衡量指标
  34. 响应时间(毫秒级),越小越好
  35. 自下而上 分类:数据库响应t(最耗时)、服务器tnginx分发t、服务端t)、网络传输(网络硬件 解析传输请求 耗时)、客户端(一般忽略不计,除非有大量逻辑)
  36. 吞吐量(TPS 每秒事务量,体现接口性能,越大越好)
  37. 自下而上 分类:
  38. 磁盘吞吐量,2个关键指标
  39. IOPSinput/output per second)每秒的输入输出量/读写次数。(次数)
  40. 指单位时间系统处理的IO请求数量(通常为读写请求),关注的是随机读写的性能。
  41. 适用于随机读写频繁的应用,如小文件存储(图片)、oltp数据库、邮件服务器
  42. 数据吞吐量(大小,关键指标)
  43. 指单位时间成功传输的数据量
  44. 对于大量顺序读写频繁的应用,传输大量连续数据。如:电视台的视频编辑、视频点播VOD
  45. 网络吞吐量,设备能够接受的最大数据速率
  46. 与带宽、cpu处理能力、网卡、防火墙、外部接口、IO有关
  47. 主要取决于,网卡处理能力、内部程序算法、带宽大小
  48. 计算机资源分配使用率
  49. 木桶效应:cpu占用率、内存使用率、磁盘IO、网络IO
  50. 负载承受能力
  51. 通过压测的不断加量,观察系统响应时间上升曲线是否平缓,分析系统极限。
  52. 迭代之前的版本的系统性能指标 作为参考标准,通过自动化测试,校验迭代发版后的系统性能是否异常
  53. 如:响应时间、吞吐量、负载能力、资源使用率(cpu、内存、磁盘IO、网络IO
  54. -------------------------------------------------------------
  55. 总结
  56. why?不定期宕机、并发、没人用、提高性能 减少机器 节约钱
  57. when?编码后上线前,压测系统极限;上线后,实时监控及时修复
  58. how
  59. 影响因素:
  60. cpu,代码死循环、正则回溯、full gc、线程切换
  61. 内存,小而快,jvm堆存储java对象 --> 内存溢出
  62. 磁盘,大而慢,读写速度 :内存 > ssd > 磁盘
  63. 网络,数据包大/并发高--> 增加带宽
  64. 异常,异常栈 耗性能
  65. 数据库,读写并发 导致 磁盘IO
  66. 锁竞争,上下文切换 耗性能 --> 减少锁竞争,锁粒度细化
  67. 衡量指标
  68. 响应时间:db --> server --> nginx --> 网络 --> client
  69. 吞吐量
  70. 磁盘***:IOPS(频率)+数据吞吐量(大小)
  71. 网络***:网卡设置能接受的最大速率
  72. 资源占用率:cpu、内存、磁盘IO、网络IO
  73. 系统极限:通过压测,观察系统响应时间是否平缓增涨,至极限

发表评论

表情:
评论列表 (有 0 条评论,78人围观)

还没有评论,来说两句吧...

相关阅读

    相关 性能--nginx优化

      Nginx是一个高性能的Web和反向代理服务器,有很多优越的特性。在高并发的情况下nginx的一些默认参数并不适用。下面介绍一下nginx优化的几个方面 1.配置线程数和