近半年來,卻頻繁出現連接數據庫失敗錯誤(一周1~2次),需要找空間商重啟MySQL服務才行:
Warning: MySQL_connect(): Can 't connect to MySQL Server on 'xx.xx.xx.xx ' (4) in /www/users/1b2g.com/xxxx.PHP on line xxxx
找空間商投訴,空間商說是我自己的問題,說同主機的其他網站沒有類似問題。
在網上搜索,似乎有些網友說,操作數據庫不能用mysql_connect()和mysql_close()開關。照文中指示,將mysql_connect()改成了MySQL_pconnect(),似乎正常了半個月時間。但是這半個月恰好因為百度調整,我的網站流量下降了。這2天,流量恢復,問題再度出現,而且不再是1周1~2,是天天出現:
Warning: MySQL_pconnect(): Can 't connect to MySQL Server on 'xx.xx.xx.xx ' (4) in /www/users/1b2g.com/xxxx.PHP on line xxxx
特別是今天,重啟了也沒用,又壞了,又聯系不到客服,急死了。
請大家幫忙找找,到底是啥原因?是否和流量大小相關?應該怎麼解決,謝謝!
回答:對於這個疑問,當時有人提出建議:優化一下程序,每頁不要有過多的查詢. 特別是循環體裡面,盡量不要再有查詢,否則很容易堵塞。應該考慮使用連接池
但是提問者又出現了問題:我已經盡可能減少每個頁面的數據庫連接數了。
曾經最開始的時候有個頁面的連接數是比較多(因為開始為了代碼復用,用了iframe嵌套),後來經優化最多的1個頁面已經減到4個;其他一般1~2個。
昨天我已經把所有頁面的連接數都降到2個以下,用戶訪問最多的頁面(占訪問總量的80%)只有1個連接。
但是今天中午問題又出現了。
從現象來看, 'xx.xx.xx.xx '應該你是用了域名或者IP作為host名,這樣一旦DNS或者網關出問題,就會連不上本機端口,建議你使用localhost作為host名。localhost還會在不支持socket的時候自動使用管道連接本機,不會出現連接問題。