MySQL 連接數相關參數設置

来源:https://www.cnblogs.com/wanghao4023030/archive/2018/04/03/8708222.html
-Advertisement-
Play Games

當我們的資料庫伺服器遇到如下的錯誤:ERROR: Too many connections 一種可能性就是我們的壓力確實很大,需要增加伺服器硬體資源或者增加資料庫伺服器。但是大多數情況下是我們的連接數配置不合理造成的。 在MySQL中,有如下幾個參數是和連接數配置相關的: Max_connectio ...


當我們的資料庫伺服器遇到如下的錯誤:ERROR: Too many connections

一種可能性就是我們的壓力確實很大,需要增加伺服器硬體資源或者增加資料庫伺服器。但是大多數情況下是我們的連接數配置不合理造成的。

在MySQL中,有如下幾個參數是和連接數配置相關的:

Max_connections

Max_used_connections

Connections

Max_user_connections

Back_log

Max_connect_errors

接下來我們逐一來分析這些參數的意義:

Max_connections:

是指整個資料庫伺服器所允許的最大連接數,可使用以下命令進行查詢:

Show variables like ‘max_connections’;

 

在Windows平臺該數值一般預設為151,如果超過該數值,由於限制那麼系統就會產生等待的情況,從而影響系統的併發量和吞吐量。

通常情況下,我們會根據伺服器的性能適當的調整一個合適的值,比如500-800,但是要註意該數值的最大值為16384,請不要超過這個值。

由於資料庫會為每個連接,分配一定記憶體資源和緩衝區,通常為每個連接分配256KB資源,所以設置要慎重一些,建議不要超過實際用戶的1.5倍。

 

在我們評估最大連接數數值的時候,我們可以使用以下的一些命令,來查看一下歷史數據,提供參考數據:

Show global status like ‘max_used_connection’;

 

這個命令用於查詢,伺服器自啟動以來運行期間的最大連接數。

show global status like 'Connections';

這個命令可以查詢伺服器自啟動以來的連接數的總數,這是一個累計值,可以查看資料庫連接的頻率。

通過檢測這些數據,我們就能得到是否需要增加Max_connections的證據。

如果max_used_connections 已經等於或者接近Max_connections,那麼我們就需要增加資料庫的最大值。

按照通用的20/80法則,我們建議留有20%的連接數用於系統備用,即Max_used_connections/Max_connections *100% < 80%。

按照經驗,我們會留比較大的連接數,比如留50%的連接數用於備用。

 

Max_user_connections

是指對每個用戶允許的最大連接數。

一般情況下我們都會讓其保持預設值,除非有特定的需要或者臨時性的用戶,我們才做出限制。

該參數會限制單個用戶的最大連接值,通常是對單用戶併發用戶進行限制。

 

Back_log

show variables like 'back_log';

 

該參數是用來緩存用戶連接的,相當於一個排隊的連接池。

在資料庫達到最大連接數的時候,新的連接請求會被存放在堆棧中,並等待其他連接釋放資源。

如果等待的連接數超過這個值,那麼新的連接將不會被接受。

這個數值不能超過系統的TCP/IP連接的監聽隊列數,否則無效。

Linux系統我們推薦設置為小於512的整數。

註意每個隊列會消耗256kb的記憶體資源。

 

Max_connect_errors

show variables like 'max_connect_errors';

 

該參數是指,當連接的錯誤數達到這個閾值的時候,系統會終止用戶的連接服務。

需要使用flush hosts來清除錯誤,否則就會報錯:

Host *** is blocked because of many connection errors.Unblock with ‘mysqladmin flush-hosts’.

當資料庫達到這個閾值的時候,資料庫認定系統出現了一個錯誤,並且會阻止該用戶後續的請求操作,除非使用命令刷新系統。

如果是內網環境,建議可以將數值設置的高一點,並使用任務機制定期刷新hosts。

 

Connect_timeout

show variables like '%connect_timeout%';

 

指定MySQL服務等待應答的時間,如果超時那麼客戶端會返回一個錯誤,bad handshake。

在Windows環境下預設值為10秒。

如果是區域網或者高併發的環境下,可以適當提高該數值,比如15-20 秒,以避免出現連接錯誤。

建議該數值要結合thread_cache_size建議適當提高該數值,以便提高更多的連接數。

 

Skip_name_resolve

show variables like '%skip_name_resolve%';

 

該設置是用於提高資料庫伺服器的連接速度。

MySQL在獲得連接請求的時候,會根據請求中的IP地址,來反向查詢伺服器的主機名,然後再次獲取該伺服器的IP地址。

如果兩次獲取的IP地址一致,那麼才會建立連接。

按照這種設計,一次連接會耗費較長的時間,主要是一種安全上的驗證。

但是我們不推薦在廣域網環境下,打開這個設置,以防止黑客的攻擊。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • SSH免密碼原理示意圖 過程:首先在A主機上面產生一個公鑰,把它拷貝到B主機上面,這個時候當A主機向B發送請求的時候,B主機就會去查看是否註冊過A,如果查到,B就會加密返回給A,A然後解密把明文返回給B,B一驗證發現正確,A就可以登錄到B裡面 註意:minimal安裝的系統出現的問題:缺各種命令,安 ...
  • 示例 WHILE s <> 1 DO select xxx; insert into xxx; END WHILE; 執行耗時27秒 優化點1: 添加事物 START TRANSACTION; #開啟事物 WHILE s <> 1 DO select xxx; insert into xxx; EN ...
  • 經常遇到獲取數據表中多個列的最小值和最大值,例如: 獲取這 4個價格的最小值和最大值: SELECT( SELECT min(minPrice) FROM ( VALUES (IIF(MarketSingleImagetextPrice=0,null,MarketSingleImagetextPri ...
  • 在博問上看到一個提問“MSSQL如何將查詢結果拼接成字元串” ,想了一下應該怎麼實現呢,在c#等語言下好實現,但在sql里實現、還真沒做過。 目標:想要在SQL中將查詢的結果拼接為 '1','2','3','4','5' 分析:要進行拼接就要取得每行的值,想到了游標可以做到。於是有了下麵的方法 se ...
  • 1、直接修改 /etc/sysconfig/network-scripts/ifcfg-eth0 刪掉UUID HWADDR配置靜態地址 2、修改配置文件vi /etc/udev/rules.d/70-persistent-net.rules 3、(重啟後生效)驗證 註: *****查看主機名hos ...
  • 本文為mariadb官方手冊:CREATE PROCEDURE的譯文。 原文:https://mariadb.com/kb/en/create-procedure/我提交到MariaDB官方手冊的譯文:https://mariadb.com/kb/zh-cn/create-procedure/ 回到 ...
  • 3月31日,由魅族科技聯合麥思博(msup)有限公司主辦的第十二期魅族技術開放日“洞察數據價值”在深圳虛擬大學園觸夢社區順利舉行。珠三角特區寶貴的科技資源與精準的技術從業人群為本次開放日活動的舉辦提供了優勢。 活動現場,200名大數據技術開發從業者齊聚一堂。魅族技術品牌負責人石松表示,大數據平臺作為 ...
  • 在測試工作中,有時需要測試資料庫數據經過sql計算後的結果是否滿足某一功能查詢得到的返回值。 針對某些需要功能需要聯查多張表,此時 關聯 的作用就異常重要了,而針對多表關聯,其中 關聯條件的重要性不言而喻, 不同的關聯條件會得到不同的結果集。 廢話不多說,下麵開始做個實驗。 建表 data_stoc ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...