第一先限制Innodb的并發(fā)處理.如果innodb_thread_concurrency = 0 可以先改成 16或是64 看機(jī)器壓力,如果
非常大,先改成16讓機(jī)器的壓力下來,然后慢慢增達(dá),適應(yīng)自已的業(yè)務(wù).
處理方法: set global innodb_thread_concurrency=16;
方法一: (window系統(tǒng)中可直接修改my.ini文件)
進(jìn)入MYSQL安裝目錄 打開MYSQL配置文件 my.ini 或 my.cnf查找 max_connections=100 修改為 max_connections=1000 服務(wù)里重起MYSQL即可
方法二: (在mysql命令模式下)
對(duì)于連接數(shù)已經(jīng)超過600或是更多的情況,可以考慮適當(dāng)?shù)南拗埔幌逻B接數(shù),讓前端報(bào)一下錯(cuò),也別讓DB掛了.
DB在了,總是可以用來加載一下數(shù)據(jù),當(dāng)數(shù)據(jù)加載到了nosql里了,慢慢的DB壓力也會(huì)降下來的.
限制單用戶連接數(shù)在500以下. 如:
set global max_user_connections=500;
(MySQL隨著連接數(shù)的增加性能會(huì)是下降的,這也是thread_pool出現(xiàn)的原因)
另外對(duì)于有的監(jiān)控程序會(huì)讀取information_schema下面的表的程序可以考慮關(guān)閉下面的參數(shù)
innodb_stats_on_metadata=0
set global innodb_stats_on_metadata=0;
方法
MySQL的最大連接數(shù)默認(rèn)是100客戶端登錄:mysql -uusername -ppassword
設(shè)置新的最大連接數(shù)為200:mysql> set GLOBAL max_connections=200
顯示當(dāng)前運(yùn)行的Query:mysql> show processlist
顯示當(dāng)前狀態(tài):mysql> show status
退出客戶端:mysql> exit
查看當(dāng)前最大連接數(shù):mysqladmin -uusername -ppassword variables
這個(gè)參數(shù)主要防止對(duì)讀取information_schema時(shí)造成大量讀取磁盤進(jìn)行信息統(tǒng)計(jì)(如果慢查詢中出現(xiàn)關(guān)于information_schema中表時(shí),也可以考慮禁用該參數(shù))
處理依據(jù):
當(dāng)學(xué)校的一個(gè)食堂一分鐘只能為兩個(gè)打飯, 忽然來了100個(gè)時(shí)人來打飯,又沒排隊(duì), 不出會(huì)現(xiàn)了打飯的師傅要用點(diǎn)時(shí)間
去選擇為那個(gè)用戶服務(wù)了, 人越多,場(chǎng)面就越亂, 難免出現(xiàn)用戶大吼該他的場(chǎng)面, 最后有可能就出現(xiàn)不是打飯了,而時(shí)之間相互
打架了,打飯的師傅也將收到同時(shí)有90個(gè)以上的Server too busy. 如果能排一下隊(duì).最多也就50分鐘能處理完了
方法三: (linux中得新編譯mysql)
以centos 4.4 下面的mysql 5.0.33 手工編譯版本為例說明:
vi /usr/local/mysql/bin/mysqld_safe
找到safe_mysqld編輯它,找到mysqld啟動(dòng)的那兩行,在后面加上參數(shù):
-O max_connections=1500
具體一點(diǎn)就是下面的位置:
用紅字特別說明:
then $NOHUP_NICENESS $ledir/$MYSQLD
$defaults --basedir=$MY_BASEDIR_VERSION
--datadir=$DATADIR $USER_OPTION
--pid-file=$pid_file
--skip-external-locking
-O max_connections=1500
>> $err_log 2>&1 else
eval "$NOHUP_NICENESS $ledir/$MYSQLD
$defaults --basedir=$MY_BASEDIR_VERSION
--datadir=$DATADIR $USER_OPTION
--pid-file=$pid_file
--skip-external-locking $args
-O max_connections=1500 >>
$err_log 2>&1"
保存。
# service mysqld restart
# /usr/local/mysql/bin/mysqladmin -uroot -p variables
輸入root數(shù)據(jù)庫(kù)賬號(hào)的密碼后可看到
max_connections 1500 即新改動(dòng)已經(jīng)生效。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com