이 기사의 첫 번째 부분에서는 Tomcat을 Undertow로 대체하여 애플리케이션 성능을 향상시키는 방법을 배웠습니다. 고성능 웹 서버는 데이터 압축을 활성화하고 구성하는 것 외에도 네트워크를 통해 이동하는 HTTP 응답의 크기를 줄입니다.
이제 지속성 부분에서 Spring Boot 애플리케이션 성능을 향상시키는 방법에 대해 이야기하겠지만 먼저 JPA, Hibernate 및 Hikari.
JPAJakarta Persistence로 이름이 변경된 Java Persistence API는 일반적인 Java Persistence API입니다. 데이터 지속성 프레임워크
를 위한 인터페이스.JPA 사양
은 공급업체별 매핑 구현에 의존하지 않고 내부적으로 객체 관계형 매핑을 정의합니다.Hibernate는 JPA 사양을 구체적으로 구현하는 ORM 프레임워크 중 하나입니다. 즉, 이 사양이 지속, 제거, 업데이트 및 데이터 가져오기 방법의 필요성을 설명한다면 누가 실제로 이러한 동작을 구축하는 것은 Hibernate이자 또 다른 ORM인 EclipseLink입니다. 🎜>.
Hikari는 연결 풀링 프레임워크로, 데이터베이스에 대한 연결을 관리하고 재사용할 수 있도록 열어 두는 역할을 담당합니다. , 이는 향후 요청을 위한 연결의 캐시로서, 데이터베이스에 더 빠르게 액세스하고 생성될 새 연결 수를 줄입니다.
성능 향상을 위해 수행할 수 있는 구성은 다음과 같습니다.
application.yml 사용:
spring: hikari: auto-commit: false connection-timeout: 250 max-lifetime: 600000 maximum-pool-size: 20 minimum-idle: 10 pool-name: master jpa: open-in-view: false show-sql: true hibernate: ddl-auto: none properties: hibernate.connection.provider_disables_autocommit: true hibernate.generate_statistics: true
application.properties 사용:
spring.datasource.hikari.auto-commit=false spring.datasource.hikari.connection-timeout=50 spring.datasource.hikari.max-lifetime=600000 spring.datasource.hikari.maximum-pool-size=20 spring.datasource.hikari.minimum-idle=10 spring.datasource.hikari.pool-name=master spring.datasource.jpa.open-in-view=false spring.datasource.jpa.show-sql=true spring.datasource.jpa.hibernate.ddl-auto=none spring.jpa.properties.hibernate.generate_statistics=true spring.jpa.properties.hibernate.connection.provider_disables_autocommit=true
이제 옵션을 간략하게 요약해 보겠습니다.
spring.datasource.hikari.auto-commit: false인 경우 연결 풀에서 반환된 모든 연결은 자동 커밋이 비활성화된 상태로 제공됩니다.
spring.datasource.hikari.connection-timeout: 클라이언트가 풀에서 연결을 기다리는 시간(밀리초)입니다. 클라이언트를 무한정 기다리기보다는 짧은 시간 초과를 설정하여 빠르게 실패하고 오류 메시지를 반환하는 것이 바람직합니다.
spring.datasource.hikari.max-lifetime: 연결이 활성 상태로 유지될 수 있는 최대 시간입니다. 오랫동안 활성화된 연결은 공격에 더 취약하므로 연결 문제로 인한 실패를 방지하고 보안을 강화하려면 이 매개변수를 구성하는 것이 중요합니다.
spring.datasource.hikari.maximum-pool-size: 유휴 연결과 사용 중인 연결을 포함한 풀의 최대 크기로, 데이터베이스에 대한 최대 활성 연결 수를 결정합니다. 풀이 이 제한에 도달하고 유휴 연결이 없는 경우 getConnection()에 대한 호출은 실패하기 전에 최대 connectionTimeout밀리초 동안 차단됩니다.
spring.datasource.hikari.minimum-idle: 수요가 낮을 때 풀이 유지하는 최소 연결 수입니다. 풀은 연결을 최대 10개까지 줄이고 필요에 따라 다시 만들 수 있습니다. 그러나 최대 성능과 수요 급증에 대한 더 나은 대응을 위해 Hikari가 고정 크기 풀로 작동할 수 있도록 이 값을 설정하지 않는 것이 좋습니다. 기본값: spring.datasource.hikari.maximum-pool-size와 동일
spring.datasource.hikari.pool-name: pool 연결에 대한 사용자 정의 이름이며 주로 레지스트리 관리 콘솔과 JMX에 표시되어 을 식별합니다. 풀 및 해당 설정.
spring.datasource.jpa.open-in-view: OSIV(Open Session In View)가 활성화되면 요청 전체에서 세션이 유지됩니다. @Transactional 주석 없이. 이는 요청이 끝날 때까지 세션이 데이터베이스에 대한 연결을 유지하므로 애플리케이션 응답 부족과 같은 성능 문제가 발생할 수 있습니다.
spring.datasource.jpa.show-sql: 애플리케이션에서 실행 중인 SQL 로그를 표시합니다. 일반적으로 개발에서는 활성화된 상태로 두고 프로덕션에서는 비활성화합니다.
spring.datasource.jpa.hibernate.ddl-auto: 데이터베이스 스키마와 관련하여 Hibernate의 동작을 구성합니다. 다음 값을 가질 수 있습니다:
spring.jpa.properties.hibernate.generate_statistics: 쿼리 실행 시간, 실행된 쿼리 수, 기타 메트릭 등 Hibernate에 대한 자세한 정보를 수집하는 역할을 합니다.
spring.jpa.properties.hibernate.connection.provider_disables_autocommit: Hibernate에 공급자의 자동 커밋을 비활성화했음을 알립니다. (PostgreSQL, MySQL 등). Hibernate는 auto-commit이 활성화되었는지 여부를 확인하기 위해 풀에서 연결을 얻어야 하기 때문에 이는 성능에 영향을 미칩니다. . , 그가 하는 모든 거래에 대해.
이것으로 두 번째 기사를 마치겠습니다. 존재하는 모든 설정이 성능에 관한 것은 아니지만 실제로 영향을 미치는 설정은 auto-commit 및 풀 크기와 같은 Hikari 설정입니다. , JPA 및 Hibernate, 예: OSIV(Open Session In View) 공급업체에서 자동 커밋을 비활성화했음을 알려드립니다.
다음 부분에서는 JVM(Java Virtual Machine) 리소스를 절약하기 위해 예외를 구성하는 방법과 예외를 구성하는 방법에 대해 설명합니다.
참고자료:
위 내용은 Spring Boot 애플리케이션의 성능 향상 - 2부의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!