nutz mysql8小時 MySQL8小時問題

2021-10-17 18:12:14 字數 1215 閱讀 7508

一、問題

獲取mysql連線,8小時內無請求自動斷開連線。

二、解決

2.1 分析

mysql伺服器預設的"wait_timeout"是28800秒即8小時,意味著如果乙個連線的空閒時間超過8小時,mysql將自動斷開連線,而連線池卻認為該連線還是有效的,當應用申請使用該連線時,就會導致報錯

2.2 修改mysql配置

通過配置檔案修改:my.cnf

wait_timeout=31536000

interactive_timeout=31536000

通過命令修改

2.3 c3p0

方案一:減少連線池內連線的生存週期

方案二:定期使用連線池內的連線

spring配置檔案

2.4 dbcp

說明:testonborrow的意思是從資料庫連線池中取得連線時,對其的有效性進行檢查。

validationquery 是用來檢查的sql語句,「select 1」執行較快,是乙個不錯的檢測語句。

三、擴充套件

3.1 c3p0配置檔案

false

test

false

null

false

root

password

select id from test where id=1

false

true

root

在hibernate(spring管理)中的配置:

oracle.jdbc.driver.oracledriver

jdbc:oracle:thin:@localhost:1521:test

kayroot

### c3p0 connection pool###

#hibernate.c3p0.max_size 2

#hibernate.c3p0.min_size 2

#hibernate.c3p0.timeout 5000

#hibernate.c3p0.max_statements 100

#hibernate.c3p0.idle_test_period 3000

#hibernate.c3p0.acquire_increment 2

#hibernate.c3p0.validate false

在hibernate.cfg.xml檔案裡面加入如下的配置:

true

四、參考

8小時與8節課

辭去程式設計師的工作已經有乙個半月,十一假期過後一直在學校學習。這段時間有兩句話頗有感觸,一句是專英老師說的 1班有這樣的到課率我已經受寵若驚了,本科生有三分之一到課率就不錯了。還有一句是導航老師說的 可能是大家知道找工作的艱辛,所以大家都來了,聽課都很認真,不像本科寶寶們,即使來了也只關心他的王者...

Mysql連線 8小時問題

mysql預設設定當乙個連線的空閒時間超過8h,mysql就會自動斷開該連線,而連線池仍認為該連線有效。此情況下,若客戶端向連線池請求連線的話,連線池就會把已經失效的連線返回給客戶端,此時客戶端使用失效連線時即丟擲異常。解決方法 配置 spring.datasource.validation que...

spring boot mysql 8小時連線超時

使用springboot 執行緒池連線mysql時,mysql資料庫wait timeout 為8個小時,所以程式第二天發現報錯,在url配置了 autoreconnect true 也不行,正確配置以下 驗證連線的有效性 spring.datasource.test while idle true...