欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

超出MySQL最大連接數(shù)問題及解決

 更新時間:2023年05月15日 14:30:52   作者:來齊  
這篇文章主要介紹了超出MySQL最大連接數(shù)問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

超出MySQL最大連接數(shù)問題

如果遇到MySQ連接數(shù)超出最大限制了,不要慌,往下看:

通常,mysql的最大連接數(shù)默認是100, 最大可以達到16384。

查看最大連接數(shù)

show variables like '%max_connections%';

修改最大連接數(shù)

方法一:修改配置文件。推薦方法一

進入MySQL安裝目錄 打開MySQL配置文件 my.ini 或 my.cnf查找 max_connections=100 并將其修改為

max_connections=1000 然后再服務里重起MySQL服務即可.

方法二:命令行修改。不推薦方法二

命令行登錄MySQL后。設(shè)置新的MySQL最大連接數(shù)為200:

MySQL> set global max_connections=200

如果已經(jīng)連接不上了,先重啟MySQL服務后再進行上述操作即可。

這種方式有個問題,就是設(shè)置的最大連接數(shù)只在mysql當前服務進程有效,一旦mysql重啟,又會恢復到初始狀態(tài)。因為mysql啟動后的初始化工作是從其配置文件中讀取數(shù)據(jù)的,而這種方式?jīng)]有對其配置文件做更改。

MySQL最大連接數(shù),TimeOut配置

MySQL連接數(shù)配置

1.MySQL的max_connections參數(shù)用來設(shè)置最大連接(用戶)數(shù)。每個連接MySQL的用戶均算作一個連接,max_connections的默認值為100左右

1.1查看數(shù)據(jù)庫配置的最大連接數(shù)

show variables like "max_connections";

可以使用Navicat或者CMD進行命令查詢

Navicat命令頁面

CMD操作命令頁面

1.2如果實際情況中的最大連接數(shù)超過,就會提示TimeOut超出最大請求數(shù)

這是我們需要進行配置項的修改

設(shè)置調(diào)整最大連接數(shù)

set global max_connections = 1000;

Mysql的連接線程池

1.查看Mysql數(shù)據(jù)庫當前的所有連接線程

show full processlist;

圖片中可以看到當前數(shù)據(jù)庫的連接線程情況 。其中發(fā)現(xiàn)很多的線程都是Sleep狀態(tài),這個下面講到的TimeOut配置會進行管理Sleep線程。

Mysql TimeOut配置

查看Mysql的TimeOut配置

show global variables like '%timeout%';

參數(shù)名參數(shù)作用
delayed_insert_timeout在獲取鏈接時,等待握手的超時時間,只在登錄時有效,登錄成功這個參數(shù)就不管事了。主要是為了防止網(wǎng)絡(luò)不佳時應用重連導致連接數(shù)漲太快,一般默認即可
delayed_insert_timeout這是為MyISAM INSERT DELAY設(shè)計的超時參數(shù),在INSERT DELAY中止前等待INSERT語句的時間
innodb_lock_wait_timeout事務遇到鎖等待時的Query超時時間。跟死鎖不一樣,InnoDB一旦檢測到死鎖立刻就會回滾代價小的那個事務,鎖等待是沒有死鎖的情況下一個事務持有另一個事務需要的鎖資源,被回滾的肯定是請求鎖的那個Query
innodb_rollback_on_timeout這個參數(shù)關(guān)閉或不存在的話遇到超時只回滾事務最后一個Query,打開的話事務遇到超時就回滾整個事務
interactive_timeout/wait_timeout一個持續(xù)SLEEP狀態(tài)的線程多久被關(guān)閉。線程每次被使用都會被喚醒為activity狀態(tài),執(zhí)行完Query后成為interactive狀態(tài),重新開始計時。wait_timeout不同在于只作用于TCP/IP和Socket鏈接的線程,意義是一樣的
net_read_timeout / net_write_timeout這個參數(shù)只對TCP/IP鏈接有效,分別是數(shù)據(jù)庫等待接收客戶端發(fā)送網(wǎng)絡(luò)包和發(fā)送網(wǎng)絡(luò)包給客戶端的超時時間,這是在Activity狀態(tài)下的線程才有效的參數(shù)
slave_net_timeout這是Slave判斷主機是否掛掉的超時設(shè)置,在設(shè)定時間內(nèi)依然沒有獲取到Master的回應就人為Master掛掉了

這里我們設(shè)置下Sleep線程的時間,以免線程池被消耗太多

執(zhí)行修改腳本

set global interactive_timeout=100;
set global wait_timeout=30;

執(zhí)行完成后可以發(fā)現(xiàn)全局變量已修改

注意:在項目的連接字符中也需要確認是否進行了相關(guān)的配置,導致了Mysql連接失敗問題

以上設(shè)置會馬上生效,但是當mysql重啟時這個設(shè)置會失效,更好的辦法是

找到mysqld塊,修改或者添加下面的設(shè)置:

max_connections=200
wait_timeout=30
interactive_timeout=100

這樣修改之后,即便重啟mysql也會默認載入這個配置了

關(guān)于my.ini文件的路徑以及創(chuàng)建

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論