大促系统优化之应用启动速度优化实践

💡 原文中文,约19200字,阅读约需46分钟。
📝

内容提要

本文探讨了SpringBoot应用启动速度慢的问题,并提出了优化方案,如关闭Tomcat的TLD文件扫描、异步预热Hbase配置和异步生成Jsf Consumer客户端代理。这些措施将应用启动时间从400-500秒缩短至130-150秒,提升超过60%。

🎯

关键要点

  • SpringBoot应用启动速度慢的问题需要优化。
  • 应用启动时间从400-500秒缩短至130-150秒,提升超过60%。
  • 关闭Tomcat的TLD文件扫描可以加快启动速度。
  • 应用启动时Hbase配置的异步预热可以减少阻塞。
  • 使用自定义BeanPostProcessor监控bean的初始化耗时。
  • @JsfConsumer注解导致的bean初始化变慢,需要优化refer方法的执行。
  • 通过异步线程池优化JSF Consumer的代理生成,避免阻塞主流程。
  • 不同Tomcat版本对应用启动速度有影响,需选择合适版本。
  • 新旧机房的硬件性能差异影响应用启动速度。
  • 总结优化措施,包括关闭TLD扫描、异步预热Hbase、异步生成Jsf Consumer客户端代理等。

延伸问答

如何优化SpringBoot应用的启动速度?

可以通过关闭Tomcat的TLD文件扫描、异步预热Hbase配置和异步生成Jsf Consumer客户端代理等方式来优化启动速度。

关闭Tomcat的TLD文件扫描有什么好处?

关闭TLD文件扫描可以减少Tomcat启动时的阻塞,从而加快应用的启动速度。

异步预热Hbase配置是如何实现的?

通过实现SmartInitializingSingleton接口的afterSingletonsInstantiated方法,使用异步线程去预热Hbase配置,避免阻塞主流程。

Jsf Consumer客户端代理的异步生成有什么优势?

异步生成Jsf Consumer客户端代理可以避免在应用启动时阻塞主线程,从而提高整体启动速度。

不同Tomcat版本对应用启动速度的影响是什么?

不同版本的Tomcat在实例化对象时的性能差异可能导致应用启动速度的显著不同,较高版本可能会更慢。

硬件性能差异如何影响应用启动速度?

新旧机房的硬件性能差异会直接影响应用的启动速度,新的机器通常性能更好,启动速度更快。

➡️

继续阅读