首頁 > 軟體

解決mysql報錯:Data source rejected establishment of connection, message from server: \"Too many co

2023-02-20 06:01:38

最近在做壓力測試嘛,需要逐步增加使用者量做驗證,每個使用者單獨建立資料庫進行連線,就要不斷去建立資料庫,這個報錯也很容易理解,mysql連線數不夠用了

報錯

報錯資訊如下:

"SQLState":"08004","vendorCode":1040,"detailMessage":
"Data source rejected establishment of connection,message from server: "Too many connections""

原因

根本原因是mysql連線數不夠用了

但也要分情況看為什麼不夠用了

1.是mysql的max_connections屬性設定太小?

2.還是是多次insert,update操作沒有關閉session?

如果你也不確定,就繼續往下看

解決

我們要知道,mysql版本的不同,可設定的最大連線數範圍也是有所區別的:
Mysql5.5~5.7:預設的最大連線數都是151,上限為:100000
Mysql5.0版本:預設的最大連線數為100,上限為16384

檢視mysql版本

select version();

如下,我這裡是基於mysql 5.7,那麼預設的最大連線數應該是151

檢視當前mysql最大連線數限制

show variables like 'max_connections';

當前最大連線數限制是151,說明沒有改過最大連線數限制

確定連線數不夠原因

如上所示,我的情況當前是最大連線數限制是151,在此之前依然建立過十幾個資料庫;同時我又再次自行檢查過,我這裡不存在未關閉session的操作

所以原因是max_connections屬性設定太小

修改最大連線數

修改mysql使用者端最大連線數可以通過兩種方式:

一種是使用命令設定,另一種是直接修改my.cnf檔案

命令設定

使用命令設定這種方式是臨時修改,只能治標不能治本,在這個mysql服務不重啟的條件下是可用的,若mysql重啟會恢復到mysql預設的連線數(或者恢復到my.cnf檔案中設定的最大連線數)。

但由於我是在測試,無所謂,mysql重啟後的連線數

set global max_connections=1500;

修改my.cnf檔案

mysql重啟後會優先使用my.cnf組態檔中的設定,用上面命令設定後,若重啟mysql服務,則還是會回到my.cnf檔案中設定的最大連線數(或者預設值)。

# 修改my.cnf檔案,在檔案中加入如下屬性
max_connections=1500

# 然後重啟mysql服務
$ service mysqld restart

再次去建立資料庫連線,就沒問題了!

總結

到此這篇關於解決mysql報錯:Data source rejected establishment of connection, message from server: "Too many connectio的文章就介紹到這了,更多相關mysql報錯連線數不夠用內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com