小編給大家分享一下程序連不上MySQL的解決方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
成都創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),臺(tái)江網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:臺(tái)江等地區(qū)。臺(tái)江做網(wǎng)站價(jià)格咨詢:13518219792
程序連不上mysql的解決辦法:1、確定mysql服務(wù)是否正常,并找運(yùn)維確認(rèn)網(wǎng)絡(luò)問題;2、將“max_allowed_packet”值調(diào)大;3、將“net_read_timeout”值調(diào)大;4、將“connect_timeout”值調(diào)大等。
程序連不上mysql的問題總結(jié)
連不上mysql時(shí)一般有以下四種報(bào)錯(cuò):
1:Can't connect to MySQL server 2:Lost connection to MySQL server 3:Sorry, due to line fault, temporarily unable to browse, we are dealing with. 4:MySQL server has gone away
一:Can't connect to MySQL server
可能的原因:
1,mysql服務(wù)端沒有啟起來
2,網(wǎng)絡(luò)不通(iptables,selinux,網(wǎng)絡(luò)不穩(wěn)定)
對應(yīng)的解決方案:
1,dba先確定mysql服務(wù)是否正常
2,mysql服務(wù)正常的情況下找運(yùn)維確認(rèn)網(wǎng)絡(luò)問題
二: Lost connection to MySQL server
有四種情況可能會(huì)導(dǎo)致這樣的報(bào)錯(cuò):
1,網(wǎng)絡(luò)問題
2,查詢的結(jié)果集太大,比如一個(gè)查詢要返回幾百萬個(gè)結(jié)果
3,客戶端發(fā)起數(shù)據(jù)庫連接的時(shí)候由于connect_timeout設(shè)置時(shí)間太短而報(bào)錯(cuò),如果是由于這個(gè)原因引起的報(bào)錯(cuò)可以通過SHOW GLOBAL STATUS LIKE 'Aborted_connects'查看這個(gè)值是否有增加
4,查詢有blob類型,超過了max_allowed_packet參數(shù)的限制
這四種情況對應(yīng)的解決方案:
1,運(yùn)維監(jiān)控網(wǎng)絡(luò)是否有問題
2,將 net_read_timeout值調(diào)大
3,將connect_timeout值調(diào)大
4,將max_allowed_packet值調(diào)大
三: Sorry, due to line fault, temporarily unable to browse, we are dealing with.
這個(gè)錯(cuò)誤不是mysql原生的錯(cuò)誤,在網(wǎng)上也沒有找到有類似的資料.目前發(fā)現(xiàn)有三種情況會(huì)有這種報(bào)錯(cuò):
1,網(wǎng)絡(luò)有問題
2,數(shù)據(jù)庫連接數(shù)過多
3,連數(shù)據(jù)庫的帳號密碼有誤
四: MySQL server has gone away
有以下12種情況可能會(huì)導(dǎo)致這樣的報(bào)錯(cuò):
1,默認(rèn)的wait_timeout值為8個(gè)小時(shí),如果空閑連接超過這個(gè)值會(huì)被kill
2,dba手動(dòng)kill
3,客戶端的帳號沒有權(quán)限連接mysql server
4,客戶端TCP/IP連接超時(shí),如使用mysql_options(..., MYSQL_OPT_READ_TIMEOUT,...)或者mysql_options(..., MYSQL_OPT_WRITE_TIMEOUT,...)函數(shù)
5,當(dāng)客戶端禁用了自動(dòng)重連接( automatic reconnection)
6,查詢語句不正確
7,查詢語句太長,超過了max_allowed_packet的限制
8,一條insert或者replace語句更新的行數(shù)過多
9,域名解析失敗
10,防火墻屏蔽了3306端口
11,一個(gè)線程fork了多個(gè)子進(jìn)程,當(dāng)多個(gè)子進(jìn)程共用一個(gè)連接時(shí)會(huì)導(dǎo)致報(bào)錯(cuò)
12,mysql服務(wù)端掛了
報(bào)MySQL server has gone away的錯(cuò)誤原因比較多,我們可以從三個(gè)方面來應(yīng)對這個(gè)問題:
1,運(yùn)維
a,確認(rèn)防火墻規(guī)則
b,DNS服務(wù)器無異常
d,合理配置php.ini中連接mysql的參數(shù)
connect_timeout,默認(rèn)為60s
mysqli.reconnect,默認(rèn)為off
2,DBA
a,確定mysql服務(wù)和連接數(shù)無異常
b,設(shè)置合理的wait_timeout值
c,設(shè)置在服務(wù)器端合理的max_allowed_packet值
d,確認(rèn)帳號權(quán)限無誤
3,開發(fā)
a,建議使用mysqli替代mysql
b,盡量少用長連接
c,mysqli.ping()可以在連接斷開后自動(dòng)重連,mysql.ping()從mysql5.0.3后就不支持自動(dòng)重連了
d,子進(jìn)程之間不要共用一個(gè)數(shù)據(jù)庫連接
以gamiss為例,我們來看一下max_allowed_packet和超時(shí)有關(guān)的參數(shù):
>show variables like 'max_allowed_packet'; +--------------------+------------+ | Variable_name | Value | +--------------------+------------+ | max_allowed_packet | 1073741824 | +--------------------+------------+ >show variables like '%timeout%'; +-----------------------------+----------+ | Variable_name | Value | +-----------------------------+----------+ | connect_timeout | 60 | | delayed_insert_timeout | 300 | | have_statement_timeout | YES | | innodb_flush_log_at_timeout | 1 | | innodb_lock_wait_timeout | 120 | | innodb_rollback_on_timeout | OFF | | interactive_timeout | 86400 | | lock_wait_timeout | 31536000 | | net_read_timeout | 120 | | net_write_timeout | 120 | | rpl_stop_slave_timeout | 31536000 | | slave_net_timeout | 3600 | | thread_pool_idle_timeout | 60 | | wait_timeout | 86400 | +-----------------------------+----------+
來看一下這幾個(gè)與連不上數(shù)據(jù)庫相關(guān)的超時(shí)參數(shù):
connect_timeout:在獲取鏈接時(shí),等待握手的超時(shí)時(shí)間,一般默認(rèn)即可(10s),為了避免因?yàn)榫W(wǎng)絡(luò)不佳導(dǎo)致連接擁塞可以適當(dāng)增大這個(gè)值.線上配置為60s
wait_timeout/interactive_timeout:連接狀態(tài)持續(xù)為sleep的超時(shí)時(shí)間,默認(rèn)為28800(8小時(shí)),現(xiàn)上調(diào)整到了24小時(shí)
net_read_timeout:服務(wù)器端等待客戶端發(fā)送數(shù)據(jù)的超時(shí)時(shí)間,默認(rèn)60s,線上為120s
net_write_timeout:服務(wù)器端寫數(shù)據(jù)到客戶端的超時(shí)時(shí)間,默認(rèn)60s,線上為120s
再看一下max_allowed_packet參數(shù):max_allowed_packet的默認(rèn)值是1M(1048576),最大值是1G(1073741824),我們目前線上的值已經(jīng)是上限值了.
從上面的配置可以看到這些參數(shù)的設(shè)置相對來說都很大了,數(shù)據(jù)庫正常情況下程序報(bào)連不上數(shù)據(jù)庫應(yīng)該和數(shù)據(jù)庫本身的參數(shù)配置沒有關(guān)系.我們需要從其它方向來解決這個(gè)問題.
看完了這篇文章,相信你對程序連不上mysql的解決方法有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
網(wǎng)頁題目:程序連不上mysql的解決方法
文章URL:http://www.rwnh.cn/article16/psjodg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、Google、動(dòng)態(tài)網(wǎng)站、網(wǎng)站改版、靜態(tài)網(wǎng)站、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)