Can't connect to MySQL server on (99) 解法

PHP 出現下述錯誤訊息:

PHP Warning:  mysql_connect(): Can't connect to MySQL server on 'xxx.xxx.xxx.xxx' (99)

但是追蹤起來, 程式執行時, 機器、DB 都沒有什麼 Loading, 於是從設定追, 程式大概都跑約 60秒就掛掉, 於是把設定於60秒的都抓出來看, 再測試看看, 也沒有任何差異, 一樣會掛掉.

Can't connect to MySQL server on (99) 解法

追查到的主因在於 Connection 太多, 於是 TCP (Port) 不夠用, 於是就會出現此錯誤訊息, 解法如下:

先查看系統預設值

  • $ sudo sysctl -a | grep tcp_tw
    net.ipv4.tcp_tw_recycle = 0
    net.ipv4.tcp_tw_reuse = 0
  • $ sudo sysctl -a | grep tcp_syncookies
    net.ipv4.tcp_syncookies = 1
  • $ sudo sysctl -a | grep tcp_fin_timeout
    net.ipv4.tcp_fin_timeout = 60

解法: (於 Server 設定即可)

  1. vim /etc/sysctl.conf
    net.ipv4.tcp_syncookies =1
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle =1
    net.ipv4.tcp_fin_timeout= 5
  2. sudo sysctl -p # 讓設定能動, -p, --load[=<file>]  read values from file

相關網頁

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料