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