SpringBoot가 느리게 시작되는 이유는 무엇입니까?

WBOY
풀어 주다: 2023-05-17 11:01:26
앞으로
3779명이 탐색했습니다.

    SpringBoot가 느리게 시작되는 이유

    Spring Boot의 아키텍처는 너무 흔해서 마스터하지 않으면 Java로 작업한다고 말하기가 민망할 때도 있습니다. 하지만 그것은 화재이고 우리가 주의해야 할 몇 가지 작은 문제가 있습니다.

    단일 프로젝트이고 시작 속도 측면에서 요구 사항이 없다면 무시하세요.

    주제를 살펴보겠습니다. 어떤 상황에서 스프링 부트 프로젝트가 느리게 시작됩니까?

    전제 조건

    프로젝트 시작을 위한 기계 하드웨어 구성을 지연할 수 없습니다. 그렇지 않으면 프로젝트가 느리게 시작된다고 해도 프로젝트는 여전히 느껴질 것입니다. 기계가 좋지 않다는 것...

    네트워크, 메모리 크기, CPU 코어 수 등 너무 높을 필요는 없고 적어도 충분해야 합니다

    다양한 인적 요소를 제쳐두고 연결 시간이 길고, 다른 구성 요소의 시작이 느려 대기 시간이 길어집니다...

    이유 1

    프로젝트에 쓸모없는 구성이 너무 많이 사용되었습니다. 예를 들어, 가장 간단한 웹에서는 다양한 다른 Maven 구성도 추가하고 이를 프로젝트에 구성했는데(이는 과장된 예일 뿐이므로 이러한 구성은 필요하지 않음) 구성한 이후 프로젝트 자체에서는 이를 이해하지 못합니다. 을 클릭한 다음 로드하세요.

    1개는 0.1초, 10은 1초, 100은 10초... 등등 이게 가장 이해하기 쉽습니다.

    이유 2

    스프링부트 자동 구성. 자동 구성은 Spring Boot의 주요 특징이지만 시작 시간이 느려지는 단점이기도 합니다.

    말도 안 돼요, 일반적으로 사용하기 쉽고 모든 기능을 갖춘 제품이라도 항상 결함이 있는 곳이 있습니다.

    위에 언급한 것처럼 쓸데없는 구성이 많다는 점에서 제가 여기서 말씀드리고 싶은 점은 스프링부트 자체적으로 조립되는 것들이 너무 많다는 것입니다.

    spring.factories 파일은 spring boot의 관련 jar 패키지에 저장되어 있는 것을 볼 수 있는데, 그 안에는 대부분 많은 클래스가 작성되어 있는 것을 알 수 있습니다. 스프링 부트 자동 조립.

    하지만 자세히 살펴보면 전혀 사용하지 않을 수도 있는 카테고리가 실제로 많다는 것을 알게 될 것입니다.

    하지만 무엇을 할 수 있습니까? 사용 여부에 관계없이 적어도 시간을 보낼 수있는 곳이 아닙니까?

    이유 3

    프로젝트가 충분히 효율적이지 않습니다. 지금은 마이크로서비스라는 개념이 꽤 대중화된 것 같아요. 그 핵심 의미는 단순성과 단순성이라고 생각하는데, 스타트업 속도를 강조해야 하는 곳은 대부분 마이크로서비스 프로젝트에 있습니다.

    마이크로서비스 프로젝트에서는 10초 이내에 시작하는 것이 가장 좋습니다. 하지만 대부분은 프로젝트가 세부적으로 충분히 세분화되지 않았기 때문에 이를 수행하지 못합니다.

    인터페이스 하나가 시작 속도가 더 빠른지, 10개 이상이면 답은 분명합니다. 많은 프로젝트가 규모가 크고 포괄적이라는 것은 기능이 많고, 완전한 구성, 다양한 확장 가능한 구성 등이 있다는 것을 의미합니다. 포괄적이지 않을 수도 있지만 구성이 많다는 것은 무엇을 의미합니까? 유용하든 그렇지 않든 상관없습니다. 적어도 컴파일하고 로드해야 하는 클래스 파일이 훨씬 더 많을 것입니다. 그런 프로젝트를 빨리 시작하고 싶다고 했는데 어떻게 빨리 시작할 수 있습니까?

    해결책

    • maven에 불필요한 종속성이 너무 많은지 확인하세요

    • spring-boot-maven 플러그인 디버그를 사용하여 시작하고 프로젝트에서 어떤 구성이 사용되는지 확인하세요. 그런 다음 사용된 클래스만 시작됨을 시작 클래스에 직접 표시하고, @SpringBootApplication 주석을 삭제하고, @Configuration 및 @Import 주석을 수동으로 채우고, 구성된 클래스를 @Import 주석에 추가합니다.

    • 일부 종속성을 더 빠른 구성으로 대체하세요. 예를 들어, 완전한 기능과 많은 구성을 갖추고 있지만 속도가 느린 A 데이터베이스 연결 풀을 사용합니다. 그러나 실제로 B 연결 풀도 프로젝트 요구 사항을 충족할 수 있지만 상대적으로 기능이 적기 때문에 구성이 적고 속도가 더 빠릅니다. 시작하려면 A와 B 중 하나를 선택해야 합니다.

    • 더 효율적인 프로젝트를 분할하여 독립적으로 실행하세요. 크고 포괄적이라는 것은 더 많지만 세련되지 않다는 것을 의미하고, 간결하고 단순하다는 것은 덜하지만 능숙하다는 것을 의미합니다.

    SpringBoot 애플리케이션의 시작 속도를 향상시키는 방법

    @ComponentScan 및 @SpringBootApplication 스캐닝 클래스의 범위를 좁히세요

    2 Spring Boot의 JMX 모니터링을 끄고 spring.jmx.enabled=false

    를 설정하세요. JVM 매개변수 - noverify, 클래스를 확인하지 않음

    4. 시작 시 로드할 필요가 없는 Bean의 로드를 지연합니다

    5. AOP 측면에 주석을 사용하지 마세요. 시작 시 스캔이 발생합니다. 모든 방법

    7. 일부 엔드포인트 모니터링 기능을 끕니다.

    8. 프로젝트의 추가 종속 jar을 제외합니다.

    9. Swagger가 인터페이스를 스캔할 때 특정 경로 아래의 클래스만 스캔하도록 지정합니다. 10. Feign 클라이언트 인터페이스 검사 패키지 검사 범위를 좁힙니다

    위 내용은 SpringBoot가 느리게 시작되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    관련 라벨:
    원천:yisu.com
    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    최신 이슈
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿
    회사 소개 부인 성명 Sitemap
    PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!