摘要:集群運行程序中,有時候會執行并發量比較高的業務場景,一些資料庫沒有為這種高并發作業配置合適的引數,會導致作業大量報錯,這篇文章讓你玩轉并發作業,
本文分享自華為云社區《【玩轉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
點擊關注,第一時間了解華為云新鮮技術~
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/546761.html
標籤:其他
上一篇:前端程式員需要了解的MySQL
下一篇:對比分析數倉中行列存的特性
