5个高并发导致数仓资源类报错分析

摘要:集群运行过程中,有时候会执行并发量比较高的业务场景,一些数据库没有为这种高并发作业配置合适的参数,会导致作业大量报错,这篇文章让你玩转并发作业。

本文分享自华为云社区《【玩转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://my.oschina.net/u/4526289/blog/8563889

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。