您好,登錄后才能下訂單哦!
下面一起來了解下mysql執行大量操作時出現無法連接數據庫錯誤處理方案,相信大家看完肯定會受益匪淺,文字在精不在多,希望mysql執行大量操作時出現無法連接數據庫錯誤處理方案這篇短內容是你想要的。
問題:mysql執行大量的插敘操作時,報無法連接數據庫的錯誤,錯誤詳情如下:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2003] Can't connect to MySQL server on '127.0.0.1' (99)' in /mnt/Change/www/html/data/conn.php:5 Stack trace: #0 /mnt/Change/www/html/data/conn.php(5): PDO->__construct('mysql:host=127....', 'aaa', 'aaa') #1 /mnt/Change/www/html/data/conn.php(12): conn() #2 /mnt/Change/www/html/test/ZB/addHDG.php(22): Sql_Query('select LoopData...') #3 {main} thrown in /mnt/Change/www/html/data/conn.php on line 5
運行環境:linux+Apache+php+mysql
原因:對MySQL執行操作時,需要連接數據庫,連接是需要占用端口的,大量的查詢把端口用完了,數據庫也就無法連接了
查看原因:
執行大量的mysql連接時,在linux中執行
netstat -nt
就會看到大量的連接時TIME_OUT狀態
解決辦法
第一步:優化mysql,在拿到數據之后,立刻關閉mysql連接
(1)pdo只需要把連接置成null即可
$pdo=new PDO("mysql:host=127.0.0.1;dbname=aaa","aaa","aaa"); //在拿到數據之后執行下面語句即可 $pdo=null;
第二步:優化linux系統
(1)在/etc/sysctl.cnf中寫入下面語句
net.ipv4.tcp_fin_timeout = 2 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1
解釋:
net.ipv4.tcp_tw_recycle=1就是打開快速 TIME-WAIT sockets 回收,即快速回收處于TIME-WAIT的連接,默認值是0,即關閉狀態
net.ipv4.tcp_fin_timeout :設置連接超時時間,單位是秒,默認值是60秒
net.ipv4.tcp_tw_reuse =1:允許重新應用處于TIME-WAIT狀態的socket用于新的TCP連接,默認值是0,即關閉狀態
(2)在linux中執行
sysctl -p
使上面的配置生效
看完mysql執行大量操作時出現無法連接數據庫錯誤處理方案這篇文章后,很多讀者朋友肯定會想要了解更多的相關內容,如需獲取更多的行業信息,可以關注我們的行業資訊欄目。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。