作者cgcheng (..)
看板PHP
標題Re: [請益]MySQL Connection 何時建立比較妥
時間Thu Dec 15 14:55:16 2011
要 keep connection 其實 ok,不過 mysql 有一個設定需要注意
就是有個 idle 時間就會把 connection 踢掉的設定
當你用 mysql 的 command 連到 mysql,接著你就把它丟在那不管,
隔一天你在去下 sql 時,你也許會發現他會有一串訊息表示他又去
reconnect mysql,原因是因為原本的 connection idle 太久被踢掉
預設的時間我記得好像還蠻長的,但是有的 DBA 會怕你佔著不放,會
去調短這個時間,這時候問題可能就會發生,當你使用同一個 socket
對它作操作,但其實有可能這個操作會 fail,所以 error handling
要作,不過要做得好也要花些功夫
這種連線斷掉的問題,通常系統不會主動告知你,通常是對連線作操作
時才會知道
很多人寫程式,通常只會假設說執行一定會成功,就算用了 design
pattern 看起來好像乾乾淨淨,漂漂亮亮,但是其實 error handling
還是沒做好
抱歉,跟原作者想問的也許無關,出自於一點提醒
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.139.15.55
1F:推 sunz5010:感謝你的提醒、剛剛我針對這個去測試了一下,確實如果 12/15 15:01
2F:→ sunz5010:wait_connect 這個數字太小時,如果class在過程中處理其 12/15 15:02
3F:→ sunz5010:它事情(非SQL),接著要再使用connect就會出現server 12/15 15:03
4F:→ sunz5010:has gone away的現象 12/15 15:03
5F:推 sunz5010:還在思考怎麼處理比較好ing~ 12/15 15:06
6F:→ cgcheng:最簡單的方式是設定值永遠夠大讓你把事情處理完 12/15 15:09
7F:→ cgcheng:當問題issue是已知的,也許它就在也不是問題 12/15 15:10
8F:→ cgcheng:不過都太大好像也是會有resource佔著的風險啦 12/15 15:10
9F:→ cgcheng:就給你自己決定處理了,貧僧只是多嘴 12/15 15:11
10F:推 sunz5010:還是謝謝你^^ 你提出的重點是我未曾想到的 12/15 15:12
11F:→ MOONRAKER:我們有過一個案子就死在這上面,一大堆沒自動關閉的conn 12/15 15:18
12F:→ MOONRAKER:掛在上面,connection full造成錯誤。不過那是Microsoft 12/15 15:18
13F:→ MOONRAKER:SQL Server,但是原理一樣。 :P 12/15 15:18
14F:推 mervynW:建了也要斷線啊. 不能射後不理...這樣是不好的. 12/15 15:27
15F:推 sunz5010:再請教一個小問題、connect會不會隨著object生命週期過了 12/15 15:31
16F:→ sunz5010:之後自己close掉? 12/15 15:31
17F:推 mervynW:不會!! 請在 __dest 裡寫斷線 12/15 15:32
18F:推 sunz5010:嗯嗯、那有解開我的疑問了~謝謝^^ 12/15 15:33
19F:推 mervynW:ps. persistent connection 不會自己斷. 12/15 15:35
20F:→ mervynW:connect 會. 12/15 15:35
21F:→ mervynW:php/features.persistent-connections.html 12/15 15:41