5個高併發導致數倉資源類報錯分析

来源:https://www.cnblogs.com/huaweiyun/archive/2023/03/13/17211248.html
-Advertisement-
Play Games

摘要:集群運行過程中,有時候會執行併發量比較高的業務場景,一些資料庫沒有為這種高併發作業配置合適的參數,會導致作業大量報錯,這篇文章讓你玩轉併發作業。 本文分享自華為雲社區《【玩轉PB級數倉GaussDB(DWS)】線上運維 - 高併發導致資源類報錯分析解決》,作者:323老四。 集群運行過程中,有 ...


摘要:集群運行過程中,有時候會執行併發量比較高的業務場景,一些資料庫沒有為這種高併發作業配置合適的參數,會導致作業大量報錯,這篇文章讓你玩轉併發作業。

本文分享自華為雲社區《【玩轉PB級數倉GaussDB(DWS)】線上運維 - 高併發導致資源類報錯分析解決》,作者:323老四。

集群運行過程中,有時候會執行併發量比較高的業務場景,一些資料庫沒有為這種高併發作業配置合適的參數,會導致作業大量報錯,這篇文章讓你玩轉併發作業。

【報錯信息一】

客戶端返回以下類似報錯

FATAL:  Already too many clients, active/non-active/reserved: 800/19/3.

--這種報錯是因為客戶端連接數超過了CN最大連接數

【解決辦法】

gs_guc set -Z coordinator -Z datanode -N all -I all -c "max_connections=2000"

然後重啟集群

其中max_connections不能調節過大按照實際需要調節,過大會預占過多記憶體。

【報錯信息二】

客戶端或者日誌有以下報錯

has no available slot, the number of slot in use reaches upper limit!

--這種報錯是因為CN與其它實例(CN/DN)之間的連接數超過了參數控制

【解決辦法】

gs_guc set -Z coordinator -N all -I all -c " max_pool_size=2000"
gs_guc set -Z datanode -N all -I all -c " max_pool_size=10000"

然後重啟集群

由於DN數一般大於CN數量很多,所以max_pool_size參數DN設置比較大。

【報錯信息三】

客戶端或者日誌有以下報錯

Cannot get stream index, maybe comm_max_stream is not enough

--這種報錯是因為資料庫中的數據流數大於了TCP代理通信庫或SCTP通信庫支持的最大併發數據流數

【解決辦法】

gs_guc set -Z coordinator -Z datanode -N all -I all -c "comm_max_stream =8000"

然後重啟集群

該參數值必須大於併發數*每併發平均stream運算元數*(smp的平方)。

【報錯信息四】

客戶端或者日誌有以下報錯

maximum number of prepared transactions reached

--這種報錯是因為資料庫中同時處於"預備"狀態的事務的數目超過了上限

【解決辦法】

gs_guc set -Z coordinator -N all -I all -c "max_prepared_transactions =2000"
gs_guc set -Z datanode -N all -I all -c "max_prepared_transactions =8000"

然後重啟集群

該參數值必須大於max_connections。

【報錯信息五】

客戶端或者日誌有以下報錯

Resource temporarily unavailable

--這種報錯是因為當資料庫實例使用的線程數超過了上限

【解決辦法】

合理增大設置當前OS 用戶的max user processes

附:在/etc/security/limits.conf配置文件中寫入

*          soft    nproc 100000
*          hard    nproc 100000

實際設置值根據OS以及資料庫實際使用狀況設置。

需要註意的是設置完實例沒法立即生效,需要先重啟每個節點的om_monitor 進程:

ps -ef | grep om_monitor | grep -v grep | awk '{print $2}' | xargs kill -9

然後重啟資料庫,使實例參數生效,再進程檢查,PID為某一CN或者DN的進程號,需要Soft Limit 與Hard Limit均生效:

cat /proc/PID/limits
Limit                     Soft Limit           Hard Limit           Units
Max cpu time              unlimited            unlimited            seconds
Max file size             unlimited            unlimited            bytes
Max data size             unlimited            unlimited            bytes
Max stack size            8388608              unlimited            bytes
Max core file size        unlimited            unlimited            bytes
Max resident set          unlimited            unlimited            bytes
Max processes             unlimited            unlimited            processes
Max open files            1000000 1000000              files
Max locked memory         unlimited            unlimited            bytes
Max address space         unlimited            unlimited            bytes
Max file locks            unlimited            unlimited            locks
Max pending signals       522824 522824               signals
Max msgqueue size         819200 819200               bytes
Max nice priority         0 0
Max realtime priority     0 0
Max realtime timeout      unlimited            unlimited            us

 

點擊關註,第一時間瞭解華為雲新鮮技術~


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

-Advertisement-
Play Games
更多相關文章
  • 簡介 Dapper是介於Entity framework與ADO的折中選擇。既滿足手寫查詢的高性能需求,又簡化了資料庫對象映射為記憶體對象的繁雜工作。Dapper.Contrib是對Dapper的進一步封裝,使對象的基本增刪改查等操作進一步簡化。 為什麼使用Dapper.Contrib 如果僅僅使用D ...
  • 在運行期間,我們可以使用 `Emit` 來組織一段 IL 代碼,進而動態生成一個方法,甚至是一個程式集(包括類型、方法或屬性等等)。這個過程我們稱之為動態編織。這一項技術應用比較廣泛,比如數據映射(Dapper)、動態代理(AOP)等等,目的是提升大量反射而產生的性能問題。 ...
  • Blazor Server,即運行在伺服器上的 Blazor 應用程式,它的優點是應用程式在首次運行時,客戶端不需要下載運行時。但它的代碼是在伺服器上執行的,然後通過 SignalR 通信來更新客戶端的 UI,所以它要求必須建立 Web Socket 連接。 用於 Blazor 應用的 Signal ...
  • 前言 假設你正在玩一款線上多人游戲,在游戲中,有多個角色需要進行不同的操作,例如攻擊、移動、釋放技能等等。 接下來,我們用玩游戲的例子,來解釋進程和和線程的概念,以及進程和線程的區別。 進程的基本概念 我們可以將整個游戲看作一個進程,它是操作系統中資源分配的基本單位,擁有自己的地址空間、記憶體、CPU ...
  • 1. ip命令 1.1. 摘要 ip是iproute2軟體包裡面的一個強大的網路配置工具,它能夠替代一些傳統的網路管理工具。例如:ifconfig、route等。這個手冊將分章節介紹ip命令及其選項。 1.2. ip命令的語法 ip命令的用法如下: [root@node01 ~]# ip Usage ...
  • 1 許可權基本介紹 drwxr-xr-x. 3 laffy snow 4096 3月 9 16:17 test 第1位:文件類型(d,-,l,c,b) d 文件夾 - 普通文件 l 軟鏈接 c 字元設備文件,如滑鼠鍵盤 b 塊設備,如硬碟 第2-4位:確定文件所有者對文件的許可權 第5-7位:確定文件所 ...
  • 在 WebAssembly 中使用 Rust 編寫 eBPF 程式併發布 OCI 鏡像 作者:於桐,鄭昱笙 eBPF(extended Berkeley Packet Filter)是一種高性能的內核虛擬機,可以運行在內核空間中,以收集系統和網路信息。隨著電腦技術的不斷發展,eBPF 的功能日益強 ...
  • 摘要:行存表示了一種數據的存儲方式,是最傳統的一種存儲方式。 本文分享自華為雲社區《【玩轉PB級數倉GaussDB(DWS)】行列存對比的一些事》,作者:sevenjiang。 行存表示了一種數據的存儲方式,是最傳統的一種存儲方式。對於GaussDB(DWS)來說可以認為其表示存儲引擎的基礎實現,在 ...
一周排行
    -Advertisement-
    Play Games
  • 1. 說明 /* Performs operations on System.String instances that contain file or directory path information. These operations are performed in a cross-pla ...
  • 視頻地址:【WebApi+Vue3從0到1搭建《許可權管理系統》系列視頻:搭建JWT系統鑒權-嗶哩嗶哩】 https://b23.tv/R6cOcDO qq群:801913255 一、在appsettings.json中設置鑒權屬性 /*jwt鑒權*/ "JwtSetting": { "Issuer" ...
  • 引言 集成測試可在包含應用支持基礎結構(如資料庫、文件系統和網路)的級別上確保應用組件功能正常。 ASP.NET Core 通過將單元測試框架與測試 Web 主機和記憶體中測試伺服器結合使用來支持集成測試。 簡介 集成測試與單元測試相比,能夠在更廣泛的級別上評估應用的組件,確認多個組件一起工作以生成預 ...
  • 在.NET Emit編程中,我們探討了運算操作指令的重要性和應用。這些指令包括各種數學運算、位操作和比較操作,能夠在動態生成的代碼中實現對數據的處理和操作。通過這些指令,開發人員可以靈活地進行算術運算、邏輯運算和比較操作,從而實現各種複雜的演算法和邏輯......本篇之後,將進入第七部分:實戰項目 ...
  • 前言 多表頭表格是一個常見的業務需求,然而WPF中卻沒有預設實現這個功能,得益於WPF強大的控制項模板設計,我們可以通過修改控制項模板的方式自己實現它。 一、需求分析 下圖為一個典型的統計表格,統計1-12月的數據。 此時我們有一個需求,需要將月份按季度劃分,以便能夠直觀地看到季度統計數據,以下為該需求 ...
  • 如何將 ASP.NET Core MVC 項目的視圖分離到另一個項目 在當下這個年代 SPA 已是主流,人們早已忘記了 MVC 以及 Razor 的故事。但是在某些場景下 SSR 還是有意想不到效果。比如某些靜態頁面,比如追求首屏載入速度的時候。最近在項目中回歸傳統效果還是不錯。 有的時候我們希望將 ...
  • System.AggregateException: 發生一個或多個錯誤。 > Microsoft.WebTools.Shared.Exceptions.WebToolsException: 生成失敗。檢查輸出視窗瞭解更多詳細信息。 內部異常堆棧跟蹤的結尾 > (內部異常 #0) Microsoft ...
  • 引言 在上一章節我們實戰了在Asp.Net Core中的項目實戰,這一章節講解一下如何測試Asp.Net Core的中間件。 TestServer 還記得我們在集成測試中提供的TestServer嗎? TestServer 是由 Microsoft.AspNetCore.TestHost 包提供的。 ...
  • 在發現結果為真的WHEN子句時,CASE表達式的真假值判斷會終止,剩餘的WHEN子句會被忽略: CASE WHEN col_1 IN ('a', 'b') THEN '第一' WHEN col_1 IN ('a') THEN '第二' ELSE '其他' END 註意: 統一各分支返回的數據類型. ...
  • 在C#編程世界中,語法的精妙之處往往體現在那些看似微小卻極具影響力的符號與結構之中。其中,“_ =” 這一組合突然出現還真不知道什麼意思。本文將深入剖析“_ =” 的含義、工作原理及其在實際編程中的廣泛應用,揭示其作為C#語法奇兵的重要角色。 一、下劃線 _:神秘的棄元符號 下劃線 _ 在C#中並非 ...