程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 快速增加MYSQL數據庫連接數負載能力

快速增加MYSQL數據庫連接數負載能力

編輯:關於MYSQL數據庫

       第一先限制Innodb的並發處理.如果innodb_thread_concurrency = 0 可以先改成 16或是64 看機器壓力,如果

      非常大,先改成16讓機器的壓力下來,然後慢慢增達,適應自已的業務.

      處理方法: set global innodb_thread_concurrency=16;

      方法一: (window系統中可直接修改my.ini文件)

      進入MYSQL安裝目錄 打開MYSQL配置文件 my.ini 或 my.cnf查找 max_connections=100 修改為 max_connections=1000 服務裡重起MYSQL即可

      方法二: (在mysql命令模式下)

      對於連接數已經超過600或是更多的情況,可以考慮適當的限制一下連接數,讓前端報一下錯,也別讓DB掛了.

      DB在了,總是可以用來加載一下數據,當數據加載到了nosql裡了,慢慢的DB壓力也會降下來的.

      限制單用戶連接數在500以下. 如:

      set global max_user_connections=500;

      (MySQL隨著連接數的增加性能會是下降的,這也是thread_pool出現的原因)

      另外對於有的監控程序會讀取information_schema下面的表的程序可以考慮關閉下面的參數

      innodb_stats_on_metadata=0

      set global innodb_stats_on_metadata=0;

      方法

      MySQL的最大連接數默認是100客戶端登錄:mysql -uusername -ppassword

      設置新的最大連接數為200:mysql> set GLOBAL max_connections=200

      顯示當前運行的Query:mysql> show processlist

      顯示當前狀態:mysql> show status

      退出客戶端:mysql> exit

      查看當前最大連接數:mysqladmin -uusername -ppassword variables

      這個參數主要防止對讀取information_schema時造成大量讀取磁盤進行信息統計(如果慢查詢中出現關於information_schema中表時,也可以考慮禁用該參數)

      處理依據:

      當學校的一個食堂一分鐘只能為兩個打飯, 忽然來了100個時人來打飯,又沒排隊, 不出會現了打飯的師傅要用點時間

      去選擇為那個用戶服務了, 人越多,場面就越亂, 難免出現用戶大吼該他的場面, 最後有可能就出現不是打飯了,而時之間相互

      打架了,打飯的師傅也將收到同時有90個以上的Server too busy. 如果能排一下隊.最多也就50分鐘能處理完了

      方法三: (linux中得新編譯mysql)

      以centos 4.4 下面的mysql 5.0.33 手工編譯版本為例說明:

      vi /usr/local/mysql/bin/mysqld_safe

      找到safe_mysqld編輯它,找到mysqld啟動的那兩行,在後面加上參數:

      -O max_connections=1500

      具體一點就是下面的位置:

      用紅字特別說明:

      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數據庫賬號的密碼後可看到

      max_connections 1500 即新改動已經生效。

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved