• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    MySQL服務器最大連接數怎么設置才合理

    來源:懂視網 責編:小采 時間:2020-11-09 15:40:02
    文檔

    MySQL服務器最大連接數怎么設置才合理

    MySQL服務器最大連接數怎么設置才合理:如果mysql 連接數據設置不合理可能會導致很小的流量mysql就提示MySQL: ERROR 1040: Too many connections錯誤了,那么要如何才算是合理設置mysql最大連接數呢,下面我來給大家介紹介紹。 MySQL服務器的連接數并不是要達到最大的100%為好,還是要具體問題
    推薦度:
    導讀MySQL服務器最大連接數怎么設置才合理:如果mysql 連接數據設置不合理可能會導致很小的流量mysql就提示MySQL: ERROR 1040: Too many connections錯誤了,那么要如何才算是合理設置mysql最大連接數呢,下面我來給大家介紹介紹。 MySQL服務器的連接數并不是要達到最大的100%為好,還是要具體問題

    如果mysql 連接數據設置不合理可能會導致很小的流量mysql就提示MySQL: ERROR 1040: Too many connections錯誤了,那么要如何才算是合理設置mysql最大連接數呢,下面我來給大家介紹介紹。 MySQL服務器的連接數并不是要達到最大的100%為好,還是要具體問題具體

    如果mysql 連接數據設置不合理可能會導致很小的流量mysql就提示MySQL: ERROR 1040: Too many connections錯誤了,那么要如何才算是合理設置mysql最大連接數呢,下面我來給大家介紹介紹。

    MySQL服務器的連接數并不是要達到最大的100%為好,還是要具體問題具體分析,下面就對MySQL服務器最大連接數的合理設置進行了詳盡的分析,供您參考。

    我們經常會遇見“MySQL: ERROR 1040: Too many connections”的情況,通常,mysql的最大連接數默認是100, 最大可以達到16384。

    一種是訪問量確實很高,MySQL服務器抗不住,這個時候就要考慮增加從服務器分散讀壓力,另外一種情況是MySQL配置文件中max_connections值過小:

    mysql> show variables like 'max_connections';
    +-----------------+-------+
    | Variable_name | Value |
    +-----------------+-------+
    | max_connections | 256 |
    +-----------------+-------+

    這臺MySQL服務器最大連接數是256,然后查詢一下服務器響應的最大連接數:

    mysql> show global status like 'Max_used_connections';

    MySQL服務器過去的最大連接數是245,沒有達到服務器連接數上限256,應該沒有出現1040錯誤,比較理想的設置是:

    Max_used_connections / max_connections * 100% ≈ 85%

    最大連接數占上限連接數的85%左右,如果發現比例在10%以下,MySQL服務器連接上線就設置得過高了


    在Windows下常用的有兩種方式修改最大連接數。

    第一種:命令行修改。

    >mysql -uuser -ppassword(命令行登錄MySQL)

    mysql>show variables like 'max_connections';(查可以看當前的最大連接數)

    msyql>set global max_connections=1000;(設置最大連接數為1000,可以再次查看是否設置成功)

    mysql>exit(推出)

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

    第二種:修改配置文件。

    這 種方式說來很簡單,只要修改MySQL配置文件my.ini 或 my.cnf的參數max_connections,將其改為max_connections=1000,然后重啟MySQL即可。但是有一點最難的就是my.ini這個文件在哪找。通常有兩種可能,一個是在安裝目錄下(這是比較理想的情況),另一種是在數據文件的目錄下,安裝的時候如果沒有人為改變目錄的話,一般就在C:/ProgramData/MySQL往下的目錄下。

    與連接數相關的幾個參數:

    在修改最大連接數的時候會有這樣一個疑問—這個值是不是越大越好,或者設置為多大才合適?這個參數的大小要綜合很多因素來考慮,比如使用的平臺所支持的線程庫數量(windows只能支持到2048)、服務器的配置(特別是內存大小)、每個連接占用資源(內存和負載)的多少、系統需要的響應時間等。可以在global或session范圍內修改這個參數。連接數的增加會帶來很多連鎖反應,需要在實際中避免由此引發的負面影響。

    首先看一下MySQL的狀態:

    mysql> status;
    --------------
    mysql Ver 14.14 Distrib 5.5.15, for Win32 (x86)

    Connection id: 1
    Current database:
    Current user: root@localhost
    SSL: Not in use
    Using delimiter: ;
    Server version: 5.5.15 MySQL Community Server (GPL)
    Protocol version: 10
    Connection: localhost via TCP/IP
    Server characterset: utf8
    Db characterset: utf8
    Client characterset: gbk
    Conn. characterset: gbk
    TCP port: 3306
    Uptime: 1 hour 3 min 27 sec

    Threads: 12 Questions: 18 Slow queries: 10 Opens: 33 Flush tables: 5 Open tab
    les: 34 Queries per second avg: 6.256
    --------------

    Open tables:34,即當前數據庫打開表的數量是34個,注意這個34并不是實際的34個表,因為MySQL是多線程的系統,幾個不同的并發連接可能打開同一個表,這就需要為不同的連接session分配獨立的內存空間來存儲這些信息以避免沖突。因此連接數的增加會導致MySQL需要的文件描述符數目的增加。另外對于MyISAM表,還會建立一個共享的索引文件描述符。

    在MySQL數據庫層面,有幾個系統參數決定了可同時打開的表的數量和要使用的文件描述符,那就是table_open_cache、max_tmp_tables和open_files_limit。

    mysql> show variables like 'table_open%';
    +------------------+-------+
    | Variable_name | Value |
    +------------------+-------+
    | table_open_cache | 256 |
    +------------------+-------+
    1 row in set (0.00 sec)

    table_open_cache:256,這就是說所有的MySQL線程一共能同時打開256個表,我們可以搜集系統的打開表的數量的歷史記錄和這個參數來對比,決定是否要增加這個參數的大小。查看當前的打開表的數目(Open tables)可用上邊提到過的status命令,另外可以直接查詢這個系統變量的值:

    mysql> show status like 'open_tables';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | Open_tables | 3 |
    +---------------+-------+
    1 row in set (0.00 sec)

    Open_tables就是當前打開表的數目,通過flush tables命令可以關閉當前打開的表。 這個值如果過大,并且如果沒有經常的執行flush tables命令,可以考慮增加table_open_cache參數的大小。

    接下來看max_tmp_tables:
    mysql> show variables like 'max_tmp%';
    +----------------+-------+
    | Variable_name | Value |
    +----------------+-------+
    | max_tmp_tables | 32 |
    +----------------+-------+
    1 row in set (0.00 sec)
    max_tmp_tables:32即單個客戶端連接能打開的臨時表數目。查看當前已打開的臨時表的信息:
    mysql> show global status like '%tmp%table%';
    +-------------------------+-------+
    | Variable_name | Value |
    +-------------------------+-------+
    | Created_tmp_disk_tables | 0 |
    | Created_tmp_tables | 11 |
    +-------------------------+-------+
    2 rows in set (0.00 sec)
    根據這兩個值可以判斷臨時表的創建位置,一般選取BLOB和TEXT列、Group by 和 Distinct語句的數據量超過512 bytes,或者union的時候select某列的數據超過512 bytes的時候,就直接在磁盤上創建臨時表了,另外內存中的臨時表變大的時候,也可能被MySQL自動轉移到磁盤上(由tmp_table_size和max_heap_table_size參數決定)。

    增加table_open_cache或max_tmp_tables 參數的大小后,從操作系統的角度看,mysqld進程需要使用的文件描述符的個數就要相應的增加,這個是由open_files_limit參數控制的。
    mysql> show variables like 'open_files%';
    +------------------+-------+
    | Variable_name | Value |
    +------------------+-------+
    | open_files_limit | 2670 |
    +------------------+-------+
    1 row in set (0.00 sec)
    但是這個參數是OS限制的,所以我們設定的值并不一定總是生效。如果OS限制MySQL不能修改這個值,那么置為0。如果是專用的MySQL服務器上,這個值一般要設置的盡量大,就是設為沒有報Too many open files錯誤的最大值,這樣就能一勞永逸了。當操作系統無法分配足夠的文件描述符的時候,mysqld進程會在錯誤日志里記錄警告信息。
    相應的,有兩個狀態變量記錄了當前和歷史的文件打開信息:
    mysql> show global status like '%open%file%';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | Open_files | 0 |
    | Opened_files | 76 |
    +---------------+-------+
    2 rows in set (0.00 sec)
    MySQL為每個連接分配線程來處理,可以通過threads_connected參數查看當前分配的線程數量:
    mysql> show status like '%thread%';
    +------------------------------------------+-------+
    | Variable_name | Value |
    +------------------------------------------+-------+
    | Delayed_insert_threads | 0 |
    | Performance_schema_thread_classes_lost | 0 |
    | Performance_schema_thread_instances_lost | 0 |
    | Slow_launch_threads | 0 |
    | Threads_cached | 0 |
    | Threads_connected | 1 |
    | Threads_created | 1 |
    | Threads_running | 1 |
    +------------------------------------------+-------+
    8 rows in set (0.00 sec)
    比較threads_connected參數和前面提到的max_connections參數,也可以作為目前的系統負載的參照,決定是否需要修改連接數。

    查看每個線程的詳細信息:mysql>show processlist;對影響系統運行的線程:kill connection|query threadid的命令殺死。

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    MySQL服務器最大連接數怎么設置才合理

    MySQL服務器最大連接數怎么設置才合理:如果mysql 連接數據設置不合理可能會導致很小的流量mysql就提示MySQL: ERROR 1040: Too many connections錯誤了,那么要如何才算是合理設置mysql最大連接數呢,下面我來給大家介紹介紹。 MySQL服務器的連接數并不是要達到最大的100%為好,還是要具體問題
    推薦度:
    標簽: 設置 連接 如何
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 国产成人精品日本亚洲| 亚洲国产精品ⅴa在线观看| 国产午夜亚洲精品国产成人小说| 青青青国产依人精品视频| 欧美精品手机在线播放| 亚洲精品99久久久久中文字幕| 日本精品久久久中文字幕| 青青草原精品国产亚洲av| 精品久久人妻av中文字幕| 3D动漫精品啪啪一区二区下载| 亚洲国产精品人人做人人爱| 国产精品二区观看| 亚洲精品成a人在线观看| 99免费精品国产| 日韩美女18网站久久精品| 全球AV集中精品导航福利| 久久久久久亚洲精品无码| 亚洲AV无码久久精品成人| 国产精品你懂得| 精品免费久久久久国产一区 | 精品亚洲一区二区三区在线播放 | 99热门精品一区二区三区无码 | 色婷婷久久久SWAG精品| 国产高清一级毛片精品| 欧美成人精品一级高清片| 国产成人精品日本亚洲直接| 91麻豆精品一二三区在线| 蜜臀AV无码国产精品色午夜麻豆| 爽爽精品dvd蜜桃成熟时电影院| 久久人搡人人玩人妻精品首页| 99久久免费只有精品国产| 99久久精品免费| 99精品视频在线观看婷| 亚洲国产精品欧美日韩一区二区| 老湿亚洲永久精品ww47香蕉图片| 99热成人精品国产免男男| 99在线精品免费视频| 亚洲视频精品在线| 一区二区三区日韩精品| 99精品视频在线观看婷| 国产在线精品一区二区三区不卡|