接続プールSpringBoot HikariCPのパフォーマンスを最適化

アリは、以前に使用されてきたドルイド、--HikariCP私は最速として知られているがあることを聞いて、この時間は、最も簡単なコードは新星で、データベース接続プールをとても実践的な表情

1.依存性は次のとおりです。

<?= "1.0"エンコード= "UTF-8" XMLバージョン?> 
< プロジェクトのxmlns = "http://maven.apache.org/POM/4.0.0" のxmlns:XSI = "http://www.w3.org / 2001 / XMLスキーマ・インスタンス」
         のxsi:のschemaLocation = "http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" > 
    < modelVersion > 4.0.0 </ modelVersion > 
    < > 
        < groupIdを> org.springframework.boot </ groupIdを> 
        < たartifactId >
        < バージョン> 2.2.4.RELEASE </ バージョン> 
        < relativePath />  <! - リポジトリから検索親- > 
    </ > 
    < groupIdを> com.codekjm </ groupIdを> 
    < たartifactId >ウェブサイト</ たartifactId > 
    < バージョン> 0.0.1-SNAPSHOT </ バージョン> 
    < 名前>ウェブサイト</ 名前> 
    < 説明>公式サイト</ 説明> 
    < プロパティ> 
        < のjava.version > 1.8 </ のjava.version > 
    </ プロパティ> 
    < 依存> 
        < 依存> 
            < groupIdを> org.springframework.boot </ groupIdを> 
            < たartifactId >春ブートスターター< / たartifactId > 
        </ 依存関係> 
<! - JPAは最速HikariCPデータベース接続プールとして知られているデフォルトで含ま、導入に依存しない- > < 依存> <groupId > org.springframework.boot </ のgroupId > < たartifactId >ばねブートスタータデータJPA </ たartifactId > </ 依存> < 依存性> < のgroupId > org.springframework.boot </ のgroupId > < たartifactId >スプリング-bootスタータテスト</ たartifactId > < スコープ>テスト</ スコープ> < 除外> <除外> < のgroupId > org.junit.vintage </ のgroupId > < たartifactId > JUnitのヴィンテージエンジン</ たartifactId > </ 除外> </ 除外> </ 依存> < 依存性> < groupIdを>のMySQL </ のgroupId > < たartifactId > MySQLのコネクタ-javaの</ たartifactId > < バージョン> 8.0.15 </ バージョン> <スコープ>ランタイム</ スコープ> </ 依存関係> < 依存> < groupIdを> org.projectlombok </ groupIdを> < たartifactId >ロンボク</ たartifactId > < オプション></ オプション> </ 依存関係> <! - 阿里速いです-json - > < 依存> < groupIdを> com.alibaba </ のgroupId > < たartifactId > fastjson </ たartifactId > < バージョン> 1.2.54 </ バージョン> </ 依存関係> </ 依存関係> < ビルド> < プラグイン> < プラグイン> < groupIdを> org.springframework.boot </ groupIdを> < たartifactId >春・ブートのMavenプラグイン- </ たartifactId > </ プラグイン> </ プラグイン> </ ビルド> </ プロジェクト>

次のように2.yml構成は次のとおりです。

#設定ファイルがアップロード
:春
  ##データベース構成
  データソース:
    タイプ:com.zaxxer.hikari.HikariDataSourceの
    ドライバ - クラス - com.mysql.cj.jdbc.Driver:名前
    URLます。jdbc:MySQLの:// 127.0.0.1:3306/をserverTimezone%2B8 = GMTウェブサイト&useUnicode真&characterEncoding = = = UTF8&allowMultiQueriesに本当か?
    ユーザ名:ルート
    パスワード:ルート
##ひかりの接続プールの設定 ------詳細な構成、してください訪問:HTTPS:// github.com/brettwooldridge/HikariCP 
    ひかり:
# #アイドル接続の最小数
     最小 -idle:10 
##アイドル接続の最大生存時間は、600 000(10分)デフォルト
     アイドル -timeout:18,000の 
##接続の接続プールの最大数、デフォルトは10であります
     最大 -pool-サイズ:1000 
】これは、コントロールのデフォルトのプールの自動コミットの動作は、デフォルト値からのリターン接続:trueに
     自動 -commit:trueに
##の母接続プール
     プール - 名前:OfficialWebsiteHikariCP 
】この制御コネクションプールを最大寿命は、0の値、すなわち30分1800000デフォルト、無限のライフサイクルを示し
     、最大 1800000:-lifetimeを
##データベース接続タイムアウト、デフォルトは30秒、すなわち30000 
     接続 -timeout:300000 
     接続 -testクエリー:SELECT 1 
  JPA :
   ショーは -sql:trueに
   オープン -IN-ビュー:真の
  ジャクソン:
   デフォルト -property- インクルージョン中:non_null 
ログ:
  設定:CLASSPATH:logback.xml

3. [スタート]サービス、すべての情報は、エラーをログ参照、間違っていたものを報告しているようだが、起動に失敗しませんでした

 

INFO  [2020-02-08 21:08:29,641][] org.springframework.boot.StartupInfoLogger:55 - Starting OfficialWebsiteApplication on CodeKjm with PID 517424 (E:\code\TcProject\official-website\target\classes started by Code in E:\code\TcProject\official-website) 
INFO  [2020-02-08 21:08:29,642][] org.springframework.boot.SpringApplication:655 - The following profiles are active: dev 
INFO  [2020-02-08 21:08:30,094][] org.springframework.data.repository.config.RepositoryConfigurationDelegate:127 - Bootstrapping Spring Data JPA repositories in DEFAULT mode. 
INFO  [2020-02-08 21:08:30,116][] org.springframework.data.repository.config.RepositoryConfigurationDelegate:187 - Finished Spring Data repository scanning in 4ms. Found 0 JPA repository interfaces. 
INFO  [2020-02-08 21:08:30,502][] com.zaxxer.hikari.HikariDataSource:110 - WebsiteHikariCP - Starting... 
INFO  [2020-02-08 21:08:31,292][] com.zaxxer.hikari.HikariDataSource:123 - WebsiteHikariCP - Start completed. 
INFO  [2020-02-08 21:08:31,448][] org.hibernate.Version:46 - HHH000412: Hibernate Core {5.4.10.Final} 
INFO  [2020-02-08 21:08:31,639][] org.hibernate.annotations.common.reflection.java.JavaReflectionManager:49 - HCANN000001: Hibernate Commons Annotations {5.1.0.Final} 
INFO  [2020-02-08 21:08:31,902][] org.hibernate.dialect.Dialect:172 - HHH000400: Using dialect: org.hibernate.dialect.MySQL57Dialect 
INFO  [2020-02-08 21:08:32,078][] org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator:52 - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] 
INFO  [2020-02-08 21:08:32,089][] org.springframework.orm.jpa.AbstractEntityManagerFactoryBean:416 - Initialized JPA EntityManagerFactory for persistence unit 'default' 
INFO  [2020-02-08 21:08:32,189][] org.springframework.boot.StartupInfoLogger:61 - Started OfficialWebsiteApplication in 3.075 seconds (JVM running for 4.566) 
INFO  [2020-02-08 21:08:32,194][] org.springframework.orm.jpa.AbstractEntityManagerFactoryBean:598 - Closing JPA EntityManagerFactory for persistence unit 'default' 
INFO  [2020-02-08 21:08:32,198][] com.zaxxer.hikari.HikariDataSource:350 - WebsiteHikariCP - Shutdown initiated... 
Disconnected from the target VM, address: '127.0.0.1:55321', transport: 'socket'
INFO  [2020-02-08 21:08:32,202][] com.zaxxer.hikari.HikariDataSource:352 - WebsiteHikariCP - Shutdown completed. 

调配置调了半天,换回原来的Druid连接池也是不行,再看看日志,发现倒数第四行:Closing JPA EntityManagerFactory for persistence unit 'default'

发现问题了,这个问题似曾熟悉,好久之前遇到过,而且不是ERROR报出来的,太不明显了(为自己的粗心找个理由,哈哈),再回去看看依赖,发现少了一个web依赖:
<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
</dependency>

4.把这个依赖加上就行,问题解决,成功启动

INFO  [2020-02-08 21:13:35,653][] com.zaxxer.hikari.HikariDataSource:110 - WebsiteHikariCP - Starting... 
INFO  [2020-02-08 21:13:36,124][] com.zaxxer.hikari.HikariDataSource:123 - WebsiteHikariCP - Start completed. 
INFO  [2020-02-08 21:13:36,626][] org.hibernate.Version:46 - HHH000412: Hibernate Core {5.3.10.Final} 
INFO  [2020-02-08 21:13:36,628][] org.hibernate.cfg.Environment:213 - HHH000206: hibernate.properties not found 
INFO  [2020-02-08 21:13:37,612][] org.hibernate.annotations.common.reflection.java.JavaReflectionManager:49 - HCANN000001: Hibernate Commons Annotations {5.0.4.Final} 
INFO  [2020-02-08 21:13:38,015][] org.hibernate.dialect.Dialect:157 - HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dialect 
INFO  [2020-02-08 21:13:38,503][] org.springframework.orm.jpa.AbstractEntityManagerFactoryBean:415 - Initialized JPA EntityManagerFactory for persistence unit 'default' 
INFO  [2020-02-08 21:13:38,963][] org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:171 - Initializing ExecutorService 'applicationTaskExecutor' 
INFO  [2020-02-08 21:13:39,415][] org.apache.juli.logging.DirectJDKLog:173 - Starting ProtocolHandler ["http-nio-8080"] 
INFO  [2020-02-08 21:13:39,451][] org.springframework.boot.web.embedded.tomcat.TomcatWebServer:204 - Tomcat started on port(s): 8080 (http) with context path '/Website' 
INFO  [2020-02-08 21:13:39,457][] org.springframework.boot.StartupInfoLogger:59 - Started OfficialWebsiteApplication in 14.086 seconds (JVM running for 17.532) 

 

5.性能测试

有很多朋友已经亲测过了,这里我分享一个地址,大家进去比对一下各项性能,综合自己业务以及架构需要,采用合适的连接池即可

https://blog.csdn.net/fzghjx/article/details/88777442

おすすめ

転載: www.cnblogs.com/CodeKjm/p/12285191.html