2017-08-01 198 views
0

我建立一個應用程序,使用mysql作爲數據庫的彈簧引導,如我看到的是,春季啓動打開10個連接數據庫,但只使用一個。春季啓動mysql睡眠連接

每當我在db上運行show processlist時,9個連接都是睡眠狀態,只有一個正在做某事。

有一種方法可以拆分10個打開的連接之間的所有進程?

我的應用程序需要更好的mysql處理,因爲每分鐘插入大約300條記錄,所以我認爲在這些打開的連接之間進行拆分會得到更好的結果。

我aplication.yml:

security: 
    basic: 
     enabled: false 
    server: 
    context-path: /invest/ 
    compression: 
     enabled: true 
     mime-types: 
     - application/json,application/xml,text/html,text/xml,text/plain 
    spring: 
    jackson: 
     default-property-inclusion: non-null 
     serialization: 
     write-bigdecimal-as-plain: true 
     deserialization: 
     read-enums-using-to-string: true 
    datasource: 
     platform: MYSQL 
     url: jdbc:mysql://localhost:3306/invest?useSSL=true 
     username: # 
     password: # 
     separator: $$ 
     dbcp2: 
     test-while-idle: true 
     validation-query: SELECT 1 
    jpa: 
     show-sql: false  
     hibernate: 
     ddl-auto: update 
     naming: 
      strategy: org.hibernate.cfg.ImprovedNamingStrategy 
     properties: 
     hibernate: 
      dialect: org.hibernate.dialect.MySQL5Dialect 
    http: 
     encoding: 
     charset: UTF-8 
     enabled: true 
     force: true 

有辦法做到這一點?

+0

從池中只有一個連接被使用的事實表明,實際上你不需要更多。 – chrylis

+0

@chrylis是的,我需要,就像我說的,我每分鐘有大約300條記錄,而且越來越多。所以,這是一種強制它使用所有連接的方法嗎? – c0nf1ck

+0

顯示你的代碼實際上是在做事情。如果您正在進行獨立操作,Spring將自動負載平衡。 – chrylis

回答

0
  1. 你可以檢查my.ini,[mysqld] max_connections,確保你的mysql允許更多的連接。

  2. 您可以在application.yml

    spring.datasource.max活性 spring.datasource.max年齡 spring.datasource.max空閒 spring.datasource.max千載難逢調整這些配置 spring.datasource.max-open-prepared-statements spring.datasource.max-wait spring.datasource.maximum-pool-size spring.datasource.min-evictable-idle-time-millis spring.datasource.min -idle

畢竟,我不認爲這是一個問題。 Mysql每秒可以處理1000次插入。每分鐘300次對於游泳池打開多個連接太少。