客户端连接mysql 自动断开_MySql连接空闲8小时自动断开的原因及连接池配置方法...
數(shù)據(jù)庫連接超時時間查詢
非交互式超時時間,如 JDBC 程序
show global variables like 'wait_timeout';
交互式超時時間,如數(shù)據(jù)庫工具
show global variables like 'interactive_timeout';
MySQL服務器默認的“wait_timeout”是28800秒即8小時,意味著如果一個連接的空閑時間超過8個小時,MySQL將自動斷開該連接。
8小時自動斷開引起的問題解決辦法
a.定時發(fā)送JDBC語句(不推薦)
b.增加 MySQL 的 wait_timeout 屬性的值 (不推薦)
修改mysql安裝目錄下的配置文件 my.ini文件(如果沒有此文件,復制“my-default.ini”文件,生成“復件 my-default.ini”文件。將“復件 my-default.ini”文件重命名成“my.ini” ),在文件中設置:
wait_timeout=31536000
interactive_timeout=31536000
這兩個參數(shù)的默認值是8小時(60608=28800)。 注意: 1.wait_timeout的最大值只允許2147483 (24天左右),也可以使用mysql命令對這兩個屬性進行修改。
c.配置連接池(推薦)
使用數(shù)據(jù)庫連接池 自帶功能 定時清理空閑超時的jdbc連接。
show global status like 'Thread%';
Threads_cached--- 服務器端緩存連接;
Threads_connected ---當前打開的連接數(shù)
Threads_created ---創(chuàng)建的線程數(shù)
Threads_running---正在運行的線程
tips:
a、配置最小連接數(shù)5,最大連接數(shù)10,則會提前創(chuàng)建5個連接,當不夠時會再次創(chuàng)建,但不超過10個。每個連接請求如果未使用則會自動回收銷毀,但會保持最小5個連接數(shù)不會銷毀。
b、數(shù)據(jù)庫連接池和線程池一樣,使用鏈表形式存儲(前面是少使用的,后面是最近剛被使用的)。
--獲取連接:每次獲取鏈表的頭結(jié)點,并且刪除該頭結(jié)點的引用關系
--釋放連接:將該連接放入鏈表的后面
//連接數(shù)配置為2的響應結(jié)果:
第1次發(fā)送連接:com.mysql.jdbc.JDBC4Connection@6b09bb57
第1次查詢結(jié)果:id:5,orderName100
第2次發(fā)送連接:com.mysql.jdbc.JDBC4Connection@1d16f93d
第2次查詢結(jié)果:id:5,orderName100
第3次發(fā)送連接:com.mysql.jdbc.JDBC4Connection@6b09bb57
第3次查詢結(jié)果:id:5,orderName100
第4次發(fā)送連接:com.mysql.jdbc.JDBC4Connection@1d16f93d
第4次查詢結(jié)果:id:5,orderName100
第5次發(fā)送連接:com.mysql.jdbc.JDBC4Connection@6b09bb57
第5次查詢結(jié)果:id:5,orderName100
第6次發(fā)送連接:com.mysql.jdbc.JDBC4Connection@1d16f93d
第6次查詢結(jié)果:id:5,orderName100
第7次發(fā)送連接:com.mysql.jdbc.JDBC4Connection@6b09bb57
第7次查詢結(jié)果:id:5,orderName100
第8次發(fā)送連接:com.mysql.jdbc.JDBC4Connection@1d16f93d
第8次查詢結(jié)果:id:5,orderName100
第9次發(fā)送連接:com.mysql.jdbc.JDBC4Connection@6b09bb57
第9次查詢結(jié)果:id:5,orderName100
第10次發(fā)送連接:com.mysql.jdbc.JDBC4Connection@1d16f93d
第10次查詢結(jié)果:id:5,orderName100
通訊類型
同步調(diào)用:基于請求與響應;
異步調(diào)用:服務器端單獨開啟一個線程處理比較耗時間代碼;
優(yōu)點:防止客戶端阻塞;
缺點:
1.客戶端不能夠及時獲取到響應結(jié)果
2.開啟單獨一個線程異步處理 有可能會非常消耗cpu資源
連接方式【MySQL JDBC長連接】
長連接:每次建立連接完成之后,會將該連接保存起來實現(xiàn)復用,不會頻繁創(chuàng)建連接,避免tcp三次握手和四次揮手。
優(yōu)點:避免重復創(chuàng)建tcp三次握手和四次揮手(socket)
缺點: 有可能浪費我們服務器端資源;空閑超時時間
應用場景:頻繁發(fā)送請求提高效率
短連接:每次發(fā)送請求完成之后,都會把連接關閉;
優(yōu)點:避免浪費我們服務器的資源;
缺點: 每次建立連接的時候需要經(jīng)歷tcp三次握手,如果在頻繁發(fā)送請求的情況下效率有可能會降低;
數(shù)據(jù)傳輸模式
單工: 數(shù)據(jù)單向發(fā)送
半雙工: 數(shù)據(jù)雙向傳輸,但不能同時傳輸 (mysql 采用半雙工模式)
全雙工:數(shù)據(jù)雙向傳輸,可以同時傳輸
設定所接受的包的大小:
show variables like '%max_allowed_packet%';
根據(jù)情形不同,其缺省值可能是1M或者4M。
最大值是1G(1073741824),如果設置超過1G,查看最終生效結(jié)果也只有1G。
通訊協(xié)議
Unix非網(wǎng)絡協(xié)議、TCP/IP套接字
Unix非網(wǎng)絡協(xié)議:在linux 操作系統(tǒng)中客戶端和服務器端都在同一臺電腦上,客戶端訪問mysql使用Unix 協(xié)議非網(wǎng)絡協(xié)議。
TCP/IP套接字:客戶端與服務器不在同一臺電腦上 采用網(wǎng)絡方式實現(xiàn)通訊
命名管道和內(nèi)存共享
在window系統(tǒng)中客戶端和Mysql服務器在同一臺電腦上,可以使用命名管道和共享內(nèi)存的方式,
命名管道開啟:–shared-memory=on/off;
共享內(nèi)存開啟:–enable-named-pipe=on/off;
總結(jié)
以上是生活随笔為你收集整理的客户端连接mysql 自动断开_MySql连接空闲8小时自动断开的原因及连接池配置方法...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎样设置电脑壁纸_怎样设置电脑的资料定时
- 下一篇: linux cmake编译源码,linu