服務器環境中java
JAVA 鏈接數據庫 Communications link failure, Contection refusedmysql
網上不少這種狀況,解決基本上是將127.0.0.1換成localhostsql
可是我這個比較傻b,緣由也很無奈。值得記念,如下是我解決的過程,過程仍是值得學習的。數據庫
一、症狀:java 鏈接數據庫 訪問拒絕 鏈接拒絕。服務器
緣由:基本上是圍繞着 IP,PORT,DB,USERNAME,PASSWORD這幾個參數,只能是這裏出了問題。 學習
過程:將127.0.0.1換成localhost,仍是不行,修改timeout時間也不行(若是修改超時時間就能夠了,你應該查看是什麼緣由形成鏈接時間過長)日誌
緣由:原來是數據庫中止了,是IP參數形成的。進程
爲何mysql中止了呢?內存
二、症狀:java鏈接數據庫,出現 mysqld killed。。(比較隱蔽,通常看不到)查看mysql狀態,顯示mysql dead。。io
緣由:通常正常來講,mysqld是被mysqld_safe管理的,mysqld_safe至關於一個守護進程,通常mysql出現錯誤,中止後,mysqld_safe會自動重啓mysql
然而,mysqld 卻 dead 了,這顯然不正常,說明mysqld_safe沒有重啓mysql,或重啓失敗了。
過程:查看mysqld_safe日誌,確實顯示重啓失敗。
緣由:內存不夠了。。。。。。。
原來,mysql啓動時會建立一個默認128M的緩衝池,當時服務器上跑的程序太多了,連128M都分不出來了。
解決:升級服務器,關閉不須要的程序,調低mysql buffer pool 大小