👉这是一个或许对你有用的社群
🐱一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料:
《项目实战(视频)》:从书中学,往事中“练” 《互联网高频面试题》:面朝简历学习,春暖花开 《架构 x 系统设计》:摧枯拉朽,掌控面试高频场景题 《精进 Java 学习指南》:系统学习,互联网主流技术栈 《必读 Java 源码专栏》:知其然,知其所以然

👉这是一个或许对你有用的开源项目
国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。
功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号等等功能:
Boot 地址:https://gitee.com/zhijiantianya/ruoyi-vue-pro Cloud 地址:https://gitee.com/zhijiantianya/yudao-cloud 视频教程:https://doc.iocoder.cn
来源:blog.csdn.net/lkx444368875/article/details/127268108
一个其他团队的比较老的dubbo服务,spring的版本在3.2.x范围,用的还是spring那一套。
由于这个服务比较核心,而且集成的组件比较多:rabbit、dubbo、es、kafka、zk、redis、cas等等一系列组件,然后开发的痛点就是本地启动时间太慢了,常常耗时接近10分钟、机器配置差点夸张到10+。抱着好奇的心理开始这一次排查之旅。
❝
启动耗时 : Artifact xxxx:war exploded: Deploy took 730,358 milliseconds
优化成果: Artifact xxxx:war exploded: Deploy took 95,078 milliseconds
❞
由于老服务启动日志偏少,索性开始之前使用过的JProfiles来作为本次的分析工具,它可以实时侦测所有代码的运行耗时。对一些启动慢链路追踪有非常好的帮助。
Jprofile - CPU检测
基于Jprofile的使用文章
❝
https://blog.csdn.net/lkx444368875/article/details/108799142 ❞
通过JProfile检测,发现了一个比较耗时的点:就是

这个类的作用是:
privatefinalCountDownLatchstart=newCountDownLatch(1);publicFatalListenerStartupExceptiongetStartupException()throwsTimeoutException,InterruptedException{start.await(60000L,TimeUnit.MILLISECONDS);returnthis.startupException;}publicvoidrun(){SimpleMessageListenerContainer.this.redeclareElementsIfNecessary();this.consumer.start();this.start.countDown();//省略restart(this.consumer);}
它其实是有唤醒的操作的,但是由于启动不成功,唤醒不了,又触发重试,继续等待。但我没想明白的是这个东西怎么是在主线程做的,也不确定是不是包版本太低的原因。
Rabbit连不上这个其实也是有原因的,因为我们这边的本地的都是连的测试环境的,nacos的测试环境配置是阿里云内网的地址,导致本地肯定是连不上的,所以我找了个公网地址试了一下,发现果然有用。
❝
优化成果: Artifact xxxx:war exploded: Deploy took 95,078 milliseconds
❞
其实还发现了一些其他阻塞,不过都是属于连接方面的,比如zk、数据库等等,目前这个古老的项目1分半也属于偏正常范围吧,主要还是组件太多,代码也多。
好了,本次排查到此为止。排查的手段和方案可以给大家提供一种思路~
欢迎加入我的知识星球,全面提升技术能力。
文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
本篇文章来源于微信公众号: Java基基
微信扫描下方的二维码阅读本文

Comments NOTHING