范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

java性能优化实战谈一谈服务性能衡量指标有哪些?

  初衷:
  随着互联网的发展,高可靠、高并发以及降本增效,已成为各大公司面临的现实挑战,性能优化需求愈发迫切,大到分布式系统,小到代码块的算法优化,都已经成为你日常工作中必须要面对的事情。对于开发者而言,性能优化也从加分项变为一个热门技能,缺乏相关知识将很难在面试或工作中脱颖而出。
  该篇主要从理论分析入手来介绍性能优化的衡量指标,及其理论方法和注意点。
  指标是我们衡量很多事物,以及做出行为决策的重要参考。例如在生活中,当你打算买汽车时,会关注很多指标,比如动力性、燃油经济性、制动性、操纵稳定性、平顺性、通过性、排放与噪声等,而这些指标也都有相关的测试和参数,同时也会对这些指标进行一一参考。
  这个道理大家都懂,但一旦到了性能优化上,却往往因为缺乏理论依据而选择了错误的优化方向,陷入了盲猜的窘境。在衡量一项优化是否能达到目的之时,不能仅靠感觉,它同样有一系列的指标来衡量你的改进。如果在改动之后,性能不升反降,那就不能叫性能优化了。
  所谓性能,就是使用  有限的资源  在  有限的时间内  完成工作。最主要的衡量因素就是时间,所以很多衡量指标,都可以把时间作为横轴。
  加载缓慢的网站,会受到搜索排名算法的惩罚,从而导致网站排名下降。   因此加载的快慢是性能优化是否合理的一个非常直观的判断因素,但性能指标不仅仅包括单次请求的速度,它还包含更多因素。
  接下来看一下,都有哪些衡量指标能够帮我们进行决策。  衡量指标有哪些?
  1. 吞吐量和响应速度
  分布式的高并发应用并不能把单次请求作为判断依据,它往往是一个统计结果。其中最常用的衡量指标就是吞吐量和响应速度,而这两者也是考虑性能时非常重要的概念。要理解这两个指标的意义,我们可以类比为交通环境中的十字路口。
  在交通非常繁忙的情况下,十字路口是典型的瓶颈点,当红绿灯放行时间非常长时,后面往往会排起长队。
  从我们开车开始排队,到车经过红绿灯,这个过程所花费的时间,就是  响应时间。
  当然,我们可以适当地调低红绿灯的间隔时间,这样对于某些车辆来说,通过时间可能会短一些。但是,如果信号灯频繁切换,反而会导致单位时间内通过的车辆减少,换一个角度,我们也可以认为这个十字路口的车辆吞吐量减少了。
  像我们平常开发中经常提到的,QPS 代表每秒查询的数量,TPS 代表每秒事务的数量,HPS 代表每秒的 HTTP 请求数量等,这都是常用的与吞吐量相关的量化指标。
  在性能优化的时候,我们要搞清楚优化的目标,到底是吞吐量还是响应速度。   有些时候,虽然响应速度比较慢,但整个吞吐量却非常高,比如一些数据库的批量操作、一些缓冲区的合并等。虽然信息的延迟增加了,但如果我们的目标就是吞吐量,那么这显然也可以算是比较大的性能提升。
  一般情况下,我们认为:  响应速度是  串行  执行的优化,通过优化执行步骤解决问题;  吞吐量是  并行  执行的优化,通过合理利用计算资源达到目标。
  我们平常的优化主要侧重于响应速度,因为一旦响应速度提升了,那么整个吞吐量自然也会跟着提升。
  但对于高并发的互联网应用来说,响应速度和吞吐量两者都需要  。这些应用都会标榜为高吞吐、高并发的场景,用户对系统的延迟忍耐度很差,  我们需要使用有限的硬件资源,从中找到一个平衡点。  2. 响应时间衡量
  既然响应时间这么重要,我们就着重看一下响应时间的衡量方法。
  (1)平均响应时间
  我们最常用的指标,即  平均响应时间(AVG)  ,该指标能够体现服务接口的平均处理能力。它的本质是把所有的请求耗时加起来,然后除以请求的次数。举个最简单的例子,有 10 个请求,其中有 2 个 1ms、3 个 5ms、5 个 10ms,那么它的平均耗时就是(21+35+5*10)/10=6.7ms。
  除非服务在一段时间内出现了严重的问题,否则平均响应时间都会比较平缓。因为高并发应用请求量都特别大,所以长尾请求的影响会被很快平均,导致很多用户的请求变慢,但这不能体现在平均耗时指标中。
  为了解决这个问题,另外一个比较常用的指标,就是  百分位数(Percentile)  。
  (2)百分位数
  这个也比较好理解。我们圈定一个时间范围,把每次请求的耗时加入一个列表中,然后按照从小到大的顺序将这些时间进行排序。这样,我们取出特定百分位的耗时,这个数字就是 TP 值。可以看到,TP 值(Top Percentile)和中位数、平均数等是类似的,都是一个统计学里的术语。
  它的意义是,超过 N% 的请求都在 X 时间内返回。比如 TP90 = 50ms,意思是超过 90th 的请求,都在 50ms 内返回。
  这个指标也是非常重要的,它能够反映出应用接口的整体响应情况  。比如,某段时间若发生了长时间的 GC,那它的某个时间段之上的指标就会产生严重的抖动,但一些低百分位的数值却很少有变化。
  我们一般分为 TP50、TP90、TP95、TP99、TP99.9 等多个段,对高百分位的值要求越高,对系统响应能力的稳定性要求越高。
  在这些高稳定性系统中,目标就是要干掉严重影响系统的长尾请求。这部分接口性能数据的收集,我们会采用更加详细的日志记录方式,而不仅仅靠指标。比如,我们将某个接口,耗时超过 1s 的入参及执行步骤,详细地输出在日志系统中。  3. 并发量
  并发量是指系统同时能处理的请求数量,这个指标反映了系统的负载能力  。
  在高并发应用中,仅仅高吞吐是不够的,它还必须同时能为多个用户提供服务。并发高时,会导致很严重的共享资源争用问题,我们需要减少资源冲突,以及长时间占用资源的行为。
  针对响应时间进行设计,一般来说是万能的。因为响应时间减少,同一时间能够处理的请求必然会增加。值得注意的是,即使是一个秒杀系统,经过层层过滤处理,最终到达某个节点的并发数,大概也就五六十左右。我们在平常的设计中,除非并发量特别低,否则都不需要太过度关注这个指标。  4. 秒开率
  在移动互联网时代,尤其对于 App 中的页面,秒开是一种极佳的用户体验。如果能在 1 秒内加载完成页面,那用户可以获得流畅的体验,并且不会产生更多的焦虑感。
  通常而言,可以根据业务情况设定不同的页面打开标准,比如低于 1 秒内的数据占比是秒开率。业界优秀的公司,比如手淘,其页面的秒开率基本可达到 80% 以上。  5. 正确性
  说一个比较有意思的事情。我们有个技术团队,在进行测试的时候,发现接口响应非常流畅,把并发数增加到 20 以后,应用接口响应依旧非常迅速。
  但等应用真正上线时,却发生了重大事故,这是因为接口返回的都是无法使用的数据。
  其问题原因也比较好定位,就是项目中使用了熔断。在压测的时候,接口直接超出服务能力,触发熔断了,但是压测并没有对接口响应的正确性做判断,造成了非常低级的错误。
  所以在进行性能评估的时候,不要忘记正确性这一关键要素。  有哪些理论方法?
  性能优化有很多理论方法,比如木桶理论、基础测试、Amdahl 定律等。下面我们简单地讲解一下最常用的两个理论。  1. 木桶理论
  一只木桶若想要装最多的水,则需要每块木板都一样长而且没有破损才行。如果有一块木板不满足条件,那么这只桶就无法装最多的水。
  能够装多少水,取决于最短的那块木板,而不是最长的那一块。
  木桶效应在解释系统性能上,也非常适合。组成系统的组件,在速度上是良莠不齐的。  系统的整体性能,就取决于系统中最慢的组件。
  比如,在数据库应用中,制约性能最严重的是落盘的 I/O 问题,也就是说,硬盘是这个场景下的短板,我们首要的任务就是补齐这个短板。  2. 基准测试、预热
  基准测试(Benchmark)并不是简单的性能测试,是用来测试某个程序的最佳性能。
  应用接口往往在刚启动后都有短暂的超时。在测试之前,我们需要对应用进行预热,消除 JIT 编译器等因素的影响。而在 Java 里就有一个组件,即 JMH,就可以消除这些差异。  注意点
  1. 依据数字而不是猜想
  有些同学对编程有很好的感觉,能够靠猜测列出系统的瓶颈点,这种情况固然存在,但却非常不可取。复杂的系统往往有多个影响因素,我们应将性能分析放在第一位,把性能优化放在次要位置,直觉只是我们的辅助,但不能作为下结论的工具。
  进行性能优化时,我们一般会把分析后的结果排一个优先级(根据难度和影响程度),从大处着手,首先击破影响最大的点,然后将其他影响因素逐一击破。
  有些优化会引入新的性能问题,有时候这些新问题会引起更严重的性能下降,你需要评估这个连锁反应,确保这种优化确实需要,同时需要使用数字去衡量这个过程,而不是靠感觉猜想。  2. 个体数据不足信
  你是否有这样的经历:某个知名网站的访问速度真慢,光加载就花费了 x 秒。其实,仅凭一个人的一次请求,就下了"慢"这个结论,是不合适的,而在我们进行性能评估的时候,也往往会陷入这样的误区。
  这是因为个体请求的小批量数据,可参考价值并不是非常大。响应时间可能因用户的数据而异,也可能取决于设备和网络条件。
  合理的做法,是从统计数据中找到一些规律,比如上面所提到的平均响应时间、TP 值等,甚至是响应时间分布的直方图,这些都能够帮我们评估性能质量。  3. 不要过早优化和过度优化
  虽然性能优化有这么多好处,但并不代表我们要把每个地方都做到极致,性能优化也是要有限度的。程序要运行地正确,要比程序运行得更快还要困难。
  计算机科学的鼻祖"Donald Knuth" 曾说:"过早的优化是万恶之源",就是这个道理。
  如果一项改进并不能产生明显的价值,那我们为什么还要花大力气耗在上面呢?比如,某个应用已经满足了用户的吞吐量需求和响应需求,但有的同学热衷于 JVM 的调优,依然花很大力气在参数测试上,这种优化就属于过度优化。
  时间要花在刀刃上,我们需要找到最迫切需要解决的性能点,然后将其击破。比如,一个系统主要是慢在了数据库查询上,结果你却花了很大的精力去优化 Java 编码规范,这就是偏离目标的典型情况。
  一般地,性能优化后的代码,由于太过于追求执行速度,读起来都比较晦涩,在结构上也会有很多让步。很显然,过早优化会让这种难以维护的特性过早介入到你的项目中,等代码重构的时候,就会花更大的力气去解决它。
  正确的做法是,项目开发和性能优化,应该作为两个独立的步骤进行,要做性能优化,要等到整个项目的架构和功能大体进入稳定状态时再进行。  4. 保持良好的编码习惯
  我们上面提到,不要过早地优化和过度优化,但并不代表大家在编码时就不考虑这些问题。
  比如,保持好的编码规范,就可以非常方便地进行代码重构;使用合适的设计模式,合理的划分模块,就可以针对性能问题和结构问题进行聚焦、优化。
  在追求高性能、高质量编码的过程中,一些好的习惯都会积累下来,形成人生道路上优秀的修养和品质,这对我们是大有裨益的。  小结
  我们简单地了解了衡量性能的一些指标,比如常见的吞吐量和响应速度,还探讨了一些其他的影响因素,比如并发量、秒开率、容错率等。
  同时,我们也谈到了木桶理论和基准测试等两种过程方法,并对性能测试中的一些误区和注意点进行了介绍,现在你应该对如何描述性能有了更好的理解。像一些专业的性能测试软件,如 JMeter、LoadRunner 等,就是在这些基础性能指标上进行的扩展。我们在平常的工作中,也应该尽量使用专业术语,这样才能对系统性能进行正确评估。
  了解了优化指标后,有了行动导向,那接下来该从哪些方面入手呢? Java 性能优化是否有可以遵循的规律呢?
  后续系列敬请期待!!!
  #头条创作挑战赛#

超市4款廉价酒,遇到别忽视,都是不含香精的纯酿,你喝过吗大口吃肉,大碗喝酒,是古人享受生活的一种方式,甚至大诗人白居易因买不起酒喝,还把衣服当了去换酒喝,可见酒在人们生活中的重要地位。到了如今,大家的生活水平越来越好,喝酒也不再是一件奢天然青霉素找着啦!搭配这两样炒一锅,鲜香可口,贼香贼下饭天然青霉素找着啦!搭配这两样炒一锅,鲜香可口,贼香贼下饭人间大事,不外乎吃喝二字。平平淡淡的两个字,却包含了种种对于吃吃喝喝,每个人的理解意义不同,执行的力度也各不相同有的人热衷于这个馅饼我家每周都做,饼皮薄,馅料香,全家爱吃在我家餐桌上,馅饼的出镜率是比较高的。尤其是早餐,每人来张馅饼,有面有菜,炒菜就可以省了。搭配一碗粥或者一杯牛奶,早餐妥妥的。馅饼虽然好吃,但是对于面食新手来讲,制作过程总是各种翻一道风景线丨蜿蜒而上似长城,登浮山木栈道观海览城半岛全媒体记者孟达登上高高的浮山,一览山海城之美景。如今,随着岛城公园城市建设的推进,浮山绿道崂山段全线贯通,一条条崭新的登山路为市民休闲游览提供了更佳的便利。观海木栈道蜿蜒而上好党建赋能,云安富林镇探索美丽镇村建设新路径走进云浮市云安区富林镇政企村共建养殖小区,3栋竖长鸡舍整齐排列,鸡舍内部自动喂料送水等现代化设备正在高效运转。该养殖小区是云安区首个政企村共建养殖小区,占地面积约116亩。政企村共人生在最黑暗的那段时光是我自己把自己拉出深渊作者永失我爱的莉莉安图源自网络如有侵权联系删除莫言曾说在最黑暗的那段人生,是我自己把自己拉出深渊,没有那个人,我就做那个人。每个人都有自己的一段至暗时刻,你勇敢站起来直视深渊,就不武汉艳阳下的鲜虾时光一半白灼,一半香辣十二月中旬,武汉疫情吿急,即便在艳阳下,也是透心凉的阴寒。已好多天没出门了,望着外面蓝蓝的天,无端想起了东湖。上一次去,还是中秋节那天,在湖边和朋友喝茶赏月,听帅哥美女K的粤语老歌四川丹巴县深挖甲居潜能美丽乡村更有特色来源人民网四川频道原创稿利用文化阵地开展系列活动。丹巴县委宣传部供图甲居镇开展邻里守望爱在身边新时代文明实践志愿活动。丹巴县委宣传部供图今年以来,四川省甘孜州丹巴县甲居镇聚力打造乡一听就很温柔治愈的句子1。就算全世界与你格格不入,总有一个会对你温柔以待。2。你被安稳地爱着呢,应该有做任何事的勇气。3。花开不是为了花落,而是为了开得更加灿烂。4。只要来日可期,今天就值得欣喜。5。慢产能利用率走低却募资扩产陈生的天地壹号能叩开A股大门吗从房地产到醋饮料再到生猪养殖,60后北大高材生陈生在商业领域小有名气。创业30年,陈生要带着天地壹号饮料股份有限公司(以下简称天地壹号)冲击A股上市,并在近期拿到了反馈意见。招股书杭州有个社区启用法治广场是学习场所也是省级公民法治素养观测点近日,杭州萧山区盈丰街道盈二法治广场启用。启用仪式现场,与会领导向盈丰街道法治带头人法律明白人遵纪守法示范户等颁发了证书和奖杯,同时还举行了省级公民法治素养观测点授牌仪式。据了解,
2023,新的经济增长点在哪里?数字经济是新一轮科技革命和产业变革的重要动力而5G车联网是汽车产业转型升级的主推力量也将成为新的经济增长点近日,数字经济第11期报道了5G车联网数据交易模式一起来探讨吧以下为数字经锂矿龙头利润一年暴增上百亿,新晋巨头奋起直追仍难以撼动?作者泰罗,编辑小市妹2022年,锂价格的大幅上涨让锂矿企业赚的盆满钵满。1月29日晚,国内锂业龙头赣锋锂业发布了业绩预告,预计2022年净利润180亿元220亿元,同比增长2443昆明高新区,突破3000亿元!2022年,昆明高新区营业收入稳步提升,实现主营业务收入3039。6亿元,同比增长14。1,园区营收总额突破三千亿元。昆明高新区。1月29日,昆明高新区在西区火炬大厦召开2023年长江通信2022年最高预盈1。82亿深耕主业研发费用连续5年增长长江商报记者刘倩雯加大市场拓展,长江通信(600345。SH)2022年年度业绩预增喜人。1月29日晚间,长江通信发布2022年年度预增公告,公司预计2022年度归属于上市公司股东生物医药板块跌0。64奥联电子涨15。76居首来源中国经济网中国经济网北京1月31日讯今日,生物医药板块整体涨幅0。64,其中58只股票上涨,5只股票平盘,112只股票下跌。数据显示,截至今日,生物医药板块近一周涨幅0。65,国新办举行2022年农业农村经济运行情况新闻发布会国务院新闻办新闻局副局长新闻发言人寿小丽女士们先生们,大家上午好!欢迎出席国务院新闻办新闻发布会。今天,我们非常高兴邀请到农业农村部总农艺师发展规划司司长曾衍德先生,种植业管理司司前有蜡像脸后有蚂蚁腰,娱乐圈的病态审美啥时候才能结束前言娱乐圈近年来的审美到底怎么了,女明星们为了追求美简直连命都不要了,甚至网络上还出现了很多奇怪的词语,比如蝴蝶骨漫画腿等等还有不少人追求这样的外形,这不禁让人觉得当明星也不是那么龙洋27岁登上春晚,被称为ampampquot董卿接班人ampampquot,29岁因升职太快引发争议2023年1月21日晚8点,央视春晚备受瞩目。其中一名主持人又火了,她叫龙洋。站在台上的她无比的靓丽,所展示的主持风格也备受网友好评。值得注意的是,当春晚结束后,这样的词眼出现在了如何成为一名艺伎?是枝裕和的新剧舞伎家的料理人看了吗?陆陆续续把贺岁档影片看完后,我点开了Netflix的新剧舞伎家的料理人。这部剧的导演和编剧是是枝裕和,了解亚洲电影的朋友们对他应该不陌生了,他的满江红岳飞抗金抗的真是现在的东北一带吗?今天刚刚看完电影满江红,最大的感受就是不断地反转反转再反转,真是局中有局套中局套呀,至于宣传的笑到最后吗,只能说是我看见岳云鹏就想笑,与剧情毫无关系,他太有特点太跳戏了。两大主演沈周星驰功夫明星释行宇版少林八段锦理论篇详解我在之前的八段锦动作研究系列文章中,多次提到少林八段锦。但一直没有详细介绍。今天就专门介绍下少林八段锦。需要注意的是,少林八段锦练法也很多,我主要参照的是释行宇版少林八段锦。这个版