前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pulsar-6:生产环境解决pulsar-flink-connector导致磁盘满的问题

pulsar-6:生产环境解决pulsar-flink-connector导致磁盘满的问题

作者头像
千里行走
发布2021-11-10 09:37:17
7330
发布2021-11-10 09:37:17
举报
文章被收录于专栏:千里行走

目录

(1).pulsar生产集群规模

(2).集群磁盘爆炸原因与解决

1.磁盘爆炸原因

2.恢复集群

3.解决方式

(1).pulsar生产集群规模

生产环境集群(为了省钱是一个最小集群):

在aws上部署了3台8c16g的pulsar集群。选择的是1:2的c系列机型:c5a.2xlarge。

每台节点放3个进程:zk, broker, bookie。

磁盘是400G/node,一共是1.2T,但是副本数是2,所以可以存放600G的消息。

(2).集群磁盘爆炸原因与解决

1.磁盘爆炸原因

在进行全链路压测时出现磁盘爆炸的情况,3个node的磁盘使用率都超过了95%。

经过调查是因为实时计算flink中的pulsar-flink-connect使用的topic的订阅者出现了2、3亿条的消息堆积(一共12个分区,每个分区的backlog都是2、3千万)。

原因:

是pulsar-flink所创建/使用/管理的订阅者(reader)的markDeletePosition和readPosition不相等,value(markDeletePosition) << value(readPosition),每个都差2、3千万。查看官方issue这里存在这种情况,貌似后续版本会解决。

2.恢复集群

通过设置过期时间1s(单位是秒),让pulsar自动删除过期ledgers。

注意这里我设置1秒是因为业务是内测阶段所以可以,生产这么设你可以跑路了!!!

bin/pulsar-admin namespaces set-message-ttl xxx/public --messageTTL 1

重启每个bookie。

bin/pulsar-daemon stop bookie

bin/pulsar-daemon start bookie

恢复TTL配置:

bin/pulsar-admin namespaces remove-message-ttl xxx/public

再次get是:null

bin/pulsar-admin namespaces get-message-ttl xxx/public

bookie是每隔15分钟做一次清理,所以还是很麻烦,要做好监控/报警。

注意:

pulsar的消息ttl设置只能在namespace这一个级别进行设置。

3.解决方式

四处盘也没有找到优雅的解决方式,最后用一种工程方法去解决:

pulsar-flink-connector用到的topic放到一个单独的namespace,然后对这个space进行ttl设置(1小时),这样来保证它的backlog不会爆炸。一定要和相关业务放进行确认!

创建namespace:

bin/pulsar-admin namespaces create xxx/flink

bin/pulsar-admin namespaces set-message-ttl xxx/flink --messageTTL 3600

然后创建topic即可:

/app/3rd/apache-pulsar-2.8.0/bin/pulsar-admin topics create-partitioned-topic -p 12 persistent://xxx/flink/topic

处理完后也得到了pulsar官方的回复(pulsar官方还是很给力的),并且在相关issue中看到类似问题和解决方式:目前也是这么通过ttl处理。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 千里行走 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档