Im ersten Teil dieses Artikels haben wir gelernt, wie wir die Leistung unserer Anwendungen verbessern können, indem wirTomcatdurchUndertowersetzen, einen Hochleistungs-Webserver, sowie die Datenkomprimierung aktivieren und konfigurieren. um die Größe der HTTP-Antworten zu reduzieren, die über das Netzwerk übertragen werden.
Jetzt werden wir darüber sprechen, wie wir die Leistung von Spring Boot-Anwendungen im Persistenzteil verbessern können, aber zuerst müssen wir verstehen, wasJPA,HibernateundHikari.
istJPA oderJava Persistence API, das später inJakarta Persistenceumbenannt wurde, ist ein Java-Sprachstandard, der eine gemeinsame Schnittstelle für Datenpersistenz-Frameworksbeschreibt.
DieJPA-Spezifikationdefiniert die objektrelationale Zuordnung intern, anstatt sich auf herstellerspezifische Zuordnungsimplementierungen zu verlassen.
Überwintern DerHibernateist eines derORM-Frameworks, das die konkrete Umsetzung derJPA-Spezifikation ermöglicht, d,UpdateundDaten abrufen, derjenige, der diese Verhaltensweisen tatsächlich aufbaut, istHibernate, sowieEclipseLink, ein weiteresORM.Hikari
ist einVerbindungspooling-Framework, das für die Verwaltung von Verbindungen zur Datenbank verantwortlich ist und sie offen hält, damit sie wiederverwendet werden können. Mit anderen Worten, es ist einCachevon Verbindungen für zukünftige Anfragen. Dadurch wird der Datenbankzugriff beschleunigt und die Anzahl der neu zu erstellenden Verbindungen verringert.Konfigurieren von Hikari, JPA und HibernateEine Konfiguration, die wir möglicherweise durchführen, um die Leistung zu verbessern, ist wie folgt:
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
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
Hikari
geliefert.spring.datasource.hikari.connection-timeout: Zeit in Millisekunden, die der Client auf eine Verbindung vom
Poolspring.datasource.hikari.max-lifetime: Maximale Zeit, die eine Verbindung aktiv bleiben kann. Die Konfiguration dieses Parameters ist entscheidend, um Ausfälle aufgrund problematischer Verbindungen zu vermeiden und die Sicherheit zu erhöhen, da Verbindungen, die schon lange aktiv sind, anfälliger für Angriffe sind.
spring.datasource.hikari.maximum-pool-size: Maximale Größe des
Poolsbis zuconnectionTimeoutMillisekunden lang blockiert, bevor sie fehlschlagen.Es ist wichtig, einen geeigneten Wert zu finden, da viele Leute glauben, dass sie eine großartige Leistung erzielen, wenn sie 50, 70 oder sogar 100 einstellen. Ideal ist es, maximal 20 zu haben, was der Anzahl derThreads
entspricht, die die Verbindungen parallel nutzen.spring.datasource.hikari.pool-name:连接pool的用户定义名称,主要出现在注册表管理控制台和JMX中,以识别pool及其配置。
spring.datasource.jpa.open-in-view:启用OSIV(在视图中打开会话)时,即使没有 @Transactional 注释,也会在整个请求过程中维护会话。这可能会导致性能问题,例如缺乏应用程序响应,因为会话会保持与数据库的连接直到请求结束。
spring.datasource.jpa.show-sql:显示我们的应用程序中正在执行的 SQL 日志记录。我们通常在开发中启用它,但在生产中禁用它。
spring.datasource.jpa.hibernate.ddl-auto:配置Hibernate与数据库schema相关的行为。它可以具有以下值:
spring.jpa.properties.hibernate.generate_statistics:用于收集有关 Hibernate 的详细信息,例如查询执行时间、执行的查询数量和其他指标。
spring.jpa.properties.hibernate.connection.provider_disables_autocommit:通知Hibernate我们已禁用providers(PostgreSQL、MySQL等)的自动提交。这会影响性能,因为Hibernate将需要从池获取连接,以了解自动提交对于它所做的每笔事务是否启用。
至此,我们结束了文章的第二部分。并非所有设置都与性能有关,但真正影响性能的是Hikari设置,例如自动提交和池大小、JPA和Hibernate设置,例如OSIV(在视图中打开会话)并通知您我们已禁用提供者的自动提交。
在下一部分中,我们将讨论异常以及如何配置它们,以节省JVM(Java虚拟机)的资源。
参考资料:
以上是提高 Spring Boot 应用程序的性能 - 第二部分的详细内容。更多信息请关注PHP中文网其他相关文章!