|
摘要:集群运行过程中,有时候会执行并发量比较高的业务场景,一些数据库没有为这种高并发作业配置合适的参数,会导致作业大量报错,这篇文章让你玩转并发作业。 本文分享自华为云社区《【玩转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.cnblogs.com/huaweiyun/p/17211248.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
|