返回顶部
首页 > 资讯 > 精选 >怎么优化spring boot应用
  • 341
分享到

怎么优化spring boot应用

2023-06-29 06:06:38 341人浏览 独家记忆
摘要

本文小编为大家详细介绍“怎么优化spring boot应用”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么优化spring boot应用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。前言t

本文小编为大家详细介绍“怎么优化spring boot应用”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么优化spring boot应用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

    前言

    taptap-developer是一个Spring Boot框架驱动的纯grpc服务,所以,只用了四步,移除了WEBspring cloud相关的模块后,启动速度就稳稳的保持在了6s内。除了启动速度提升外,在服务待机状态下,内存锐减了50%左右,从500M左右的内存占用,缩减到了250M不到。

    分析日志

    怎么优化spring boot应用

    日志是一个应用的门面,在未深入了解一个应用的架构前,通过启动的日志输出基本可以分析出这个应用的大概的技术构成。在分析日志之前,在强调一点,这个应用是一个纯Grpc的服务。如上图贴出的日志,是未优化前的系统日志输出,从上到下有四个红色箭头指向,是本次日志分析的关键信息,下面就这四个关键信息,分别分析下。然后总结出常见的优化方法

    优化点一:关于SPRING DATA REPOSITORY SCANNING

    Spring Data repository是一个高度抽象的数据访问层接口,常见的实现有redis、jdbc、jpa、MongoDBelasticsearch等等。实现一个Spring-data-xxx包,需要实现

    org.springframework.data.repository.core.support.RepositoryFactorySupport抽象类

    然后在!/META-INF/spring.factories文件中定义好实现类。spring容器启动时,会扫描加载factories的信息。如果一个项目里有被扫描到有多个spring-data-xxx的实现,启动时日志就会打印

    Multiple Spring Data modules found, entering strict repository configuration mode!

    优化:看到这个日志,我们就需要检查下项目中是否用到了这些功能,比如引入了spring-data-Redis,其实只用到了其携带的jedis,而且jedis实例可能还是自己实例化的,这个时候就可以禁用repository的功能。参考配置如下:

    spring.data.redis.repositories.enabled=false

    Spring Data repository有三种内置的初始化模式,分别对应如下:

    • DEFAULT:和Spring其他Bean一样,在容器上下文加载时就初始化

    • DEFERRED:惰性加载,容器上下文启动完成后开始初始化

    • LAZY:惰性加载,并且延迟注入,容器上下文启动完成接收第一个请求时开始初始化
      如日志输出:Bootstrapping Spring Data repositories in DEFAULT mode,默认是随容器启动就开始初始化的

    优化:这里可以根据业务特点,选择延迟加载,

    参考配置spring.data.jpa.repositories.bootstrap-mode=lazy

    Spring Data repository会扫描项目中的实现了repository接口的类,默认情况下会盲扫所有的jar包,

    日志输出:Finished Spring Data repository scanning in 148ms. Found 0 repository interfaces.

    打印出了扫描repository接口的耗时情况。

    优化:

    这里可以通过@EnableRedisRepositories(basePackages = "com.taptap")指定扫描的路径

    可以显著提升扫描加载的速度

    优化点二:关于WEBAPPLICATIONCONTEXT

    在spring中,WebApplicationContext是ApplicationContext的增强,由spring-web-mvc实现,增加了servlet、session等web相关的内容。

    从日志Initializing Spring embedded WebApplicationContext可以看出,我们初始化了一个web容器,而纯Grpc服务用不到Web的容器上下文,所以移除如下依赖即可

    优化:

    移除implementation('org.springframework.boot:spring-boot-starter-web')

    优化点三:关于SERVLET容器

    spring-web-mvc是基于JAVA WEB标准servlet设计架构的。而servlet是由servlet容器来驱动的,常见的servlet有tocmat、jetty、undertow等。从日志中可看出,我们启动了一个8081的servlet容器。这个不应该出现在纯Grpc的服务中,所以,直接移除即可。

    优化:

    移除implementation 'org.springframework.boot:spring-boot-starter-undertow'

    优化点四:关于ARCHaiUS配置组件

    从最后一个箭头指向的日志信息可以分析出,项目引入了archaius配置加载组件,所以项目在启动时,archaius会尝试去加载默认策略的配置源。而我们整体的技术栈,配置中心统一采用了apollo,所以可以直接移除,最后通过分析定位,archaius不是单独引入的,是随着spring-cloud-starter-netflix-hystrix一同引入,这个组件是spring-cloud-netflix微服务框架最常用的,但是在这边,目前所有的微服务都是直接注册到k8s容器的,所有服务的熔断、限流、负载均衡都下沉到了容器基数设施平台,所以应用层面虽然引入了这个包,其实没有实际作用,所以最后移除spring cloud相关组件

    优化:

    移除implementation 'org.springframework.cloud:spring-cloud-starter-openfeign'和

    implementation 'org.springframework.cloud:spring-cloud-starter-netflix-hystrix'组件、

    附优化后的日志输出:

    怎么优化spring boot应用

    系统资源的变化

    优化前的

    怎么优化spring boot应用

    优化后的

    怎么优化spring boot应用

    最后,基于资源监控图,从三个维度总结下,优化后的资源占用情况:

    资源名称优化前优化后
    内存500M左右250M左右
    线程10778
    装载类1292210041

    读到这里,这篇“怎么优化spring boot应用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

    --结束END--

    本文标题: 怎么优化spring boot应用

    本文链接: https://lsjlt.com/news/323177.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • 怎么优化spring boot应用
      本文小编为大家详细介绍“怎么优化spring boot应用”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么优化spring boot应用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。前言t...
      99+
      2023-06-29
    • 优化spring boot应用后6s内启动内存减半
      目录前言分析日志优化点一:关于SPRINGDATAREPOSITORYSCANNING优化点二:关于WEBAPPLICATIONCONTEXT优化点三:关于SERVLET容器优化点四...
      99+
      2024-04-02
    • Spring boot应用怎么支持https
      本篇文章为大家展示了Spring boot应用怎么支持https,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。首先使用命令行生成一个keystore文件:keytool -genkey -alias...
      99+
      2023-06-04
    • spring Boot与Mybatis整合优化详解
      SpringBoot官方文档http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/关于spring-boot与mybatis整合优化方面的介绍,就是Mybat...
      99+
      2023-05-31
      spring boot mybatis
    • 如何使用 Spring Boot 和索引优化 ASP.NET MVC 的响应时间?
      近年来,随着互联网的高速发展,许多企业和个人都在不断地追求更好、更快、更稳定的网站性能。然而,网站性能的提升并不是一件简单的事情。在本文中,我们将介绍如何使用 Spring Boot 和索引优化 ASP.NET MVC 的响应时间。 一、S...
      99+
      2023-08-11
      索引 响应 spring
    • 使用Spring boot怎么打包部署应用
      今天就跟大家聊聊有关使用Spring boot怎么打包部署应用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、Spring Boot内置webSpring Boot 其默认是集成w...
      99+
      2023-05-30
      springboot
    • Spring Boot Admin怎么用
      这篇文章给大家分享的是有关Spring Boot Admin怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、介绍官网地址Spring Boot Admin 是开源社区孵化的项目,用于对 Spring Bo...
      99+
      2023-06-25
    • 怎么使用Spring Boot
      本篇内容介绍了“怎么使用Spring Boot”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 关闭指定的自动配置通过上面的 @Enabl...
      99+
      2023-06-02
    • Spring Boot的性能优化秘籍:打造疾风般快速的应用
      Spring Boot是一款广受欢迎的Java框架,以其简单易用和快速开发而著称。然而,随着应用程序的复杂性增加,性能问题可能会成为瓶颈。为了帮助您打造疾风般快速的Spring Boot应用,本文将分享一些实用的性能优化秘诀。 优化启...
      99+
      2024-02-24
      Spring Boot 性能优化 启动时间 内存优化 HTTP请求处理 数据库优化 缓存
    • Spring Boot中Schedule的应用
      这篇文章主要讲解了“Spring Boot中Schedule的应用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring Boot中Schedule的应...
      99+
      2024-04-02
    • Spring Boot中怎么使用Spring MVC
      本篇内容主要讲解“Spring Boot中怎么使用Spring MVC”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring Boot中怎么使用Spring&n...
      99+
      2023-07-06
    • 如何使用 Spring Boot 来优化 ASP.NET MVC 的索引?
      Spring Boot 和 ASP.NET MVC 是两种非常流行的 Web 开发框架,它们都有着各自的优点和特点。但是,当我们需要优化 ASP.NET MVC 的索引时,我们可以使用 Spring Boot 提供的一些工具和技术来实现。本...
      99+
      2023-08-12
      索引 响应 spring
    • 如何进行Spring Boot项目优化和JVM调优
      这篇文章给大家介绍如何进行Spring Boot项目优化和JVM调优,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。项目调优作为一名工程师,项目调优这事,是必须得熟练掌握的事情。在 Spring Boot 项目中,调优主...
      99+
      2023-06-16
    • 怎么使用Spring Boot Kafka
      本篇内容介绍了“怎么使用Spring Boot  Kafka”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够...
      99+
      2024-04-02
    • Spring Boot中CLI怎么用
      小编给大家分享一下Spring Boot中CLI怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1. Spring Boot CLI简介:官网地址:https...
      99+
      2023-06-25
    • 怎么利用脚本部署一个Spring Boot应用
      这篇文章给大家介绍怎么利用脚本部署一个Spring Boot应用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。部署方法如下:在 pom.xml 路径下新建文件 start.sh#!/bin/bash#0、删除原有的日志...
      99+
      2023-05-31
      springboot spring boo
    • Spring boot读取外部化怎么配置
      本篇内容主要讲解“Spring boot读取外部化怎么配置”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring boot读取外部化怎么配置”吧!1. Propertie...
      99+
      2023-06-29
    • spring boot应用调用webservice接口
      文章目录 概述一、Web Services是什么?二、使用步骤1.引入依赖2.创建配置类,根据接口路径生成Client 交给Spring 管理3.测试Web Services接口调用4.排错 总结 概述 在早期的系统中,通...
      99+
      2023-08-19
      spring boot java 后端 c# .net
    • Spring Boot中怎么使用Swagger
      小编给大家分享一下Spring Boot中怎么使用Swagger,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Swagger 简介Swagger 是一个方便 API 开发的框架,它有以下优点:自动生成在线文档,后端开发人员...
      99+
      2023-06-20
    • Spring boot Thymeleaf怎么配置国际化页面
      这篇文章主要讲解了“Spring boot Thymeleaf怎么配置国际化页面”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring boot ...
      99+
      2023-07-02
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作