FusionInsight HD集群kafka性能维度标准及常见场景(草稿)

举报
边塞诗人 发表于 2022/07/26 16:53:30 2022/07/26
【摘要】 kafka性能维度标准:6.5.1版本之后kafka生产者的性能基线标准如何判断一个kafka集群是否已经处于性能瓶颈,通常的判断条件有如下几点:维度1:磁盘IO读写磁盘性能是kafka重要的参数指标,如果磁盘IO到达性能瓶颈会直接导致业务故障。Kafka读写性能跟磁盘IO之间的关系计算如下:举例:假设磁盘IO的上限为100M/s,数据大小为8k,假设在topic仅设置为单副本的情况下,理论...

kafka性能维度标准:

6.5.1版本之后kafka生产者的性能基线标准

如何判断一个kafka集群是否已经处于性能瓶颈,通常的判断条件有如下几点:

维度1:磁盘IO

读写磁盘性能是kafka重要的参数指标,如果磁盘IO到达性能瓶颈会直接导致业务故障。Kafka读写性能跟磁盘IO之间的关系计算如下:

举例:假设磁盘IO的上限为100M/s,数据大小为8k,假设在topic仅设置为单副本的情况下,理论上一块盘能写入的数据量为100*1024/8=12800条。如果一个节点挂载4块盘,那么理论性能为4*12800条。如果kafka集群有4个节点,那么整个集群的性能为4*4*12800条。

维度2:网络IO

    现网的网卡设置一般为万兆网卡,一张万兆网卡的理论极限性能为1250MB/s,在多kafka集群场景下,如果每个节点的数据流量不超过这个值,网卡一般不会出现性能瓶颈。

维度3CPU使用率

     Kafka使用CPU的地方主要在请求的处理、数据落盘等,如果CPU使用率频繁出现95%以上的情况表示kafka集群性能已经到达瓶颈。通常影响kafka集群CPU使用率的几个参数主要有以下几个:

num.recovery.threads.per.data.dirbackground.threadsnum.replica.fetchersnum.network.threadsnum.io.threads。具体参数含义见上表。在磁盘和网卡未达到瓶颈的前提下,如果CPU使用率未达到上限,可以适当调大num.io.threadsnum.network.threads,以提升kafka的集群处理能力。

以上三个性能指标哪个先达到瓶颈就是kafka集群的瓶颈。

①.kafka的请求处理线程:num.io.thread,num.network.thread,如果这两个线程配置的非常大(num.io.thread+ num.network.thread数量超过了节点的cpu逻辑核数)那么此时CPU使用率会变得非常大。

②若存在异常请求的客户端在频繁请求,如果存在可以通知IP对应的业务侧进行调整。如果不能调整,可以用后台命令对该IP或者用户进行限制(仅限X的版本,651的版本不能动态实现)

实现方式如下:限制用户flinkuser与每个节点最多建立10个链接

./kafka-configs.sh --bootstrap-server kafkaip:21007  --alter --add-config max.connections.per.ip.overrides=flinkuser:10  --entity-type brokers --entity-default --command-config ../config/consumer.properties

③数据压缩是kafka解决空间问题和超大数据问题关键场景,例如:当kafka的磁盘空间不足时,可以使用数据压缩,来节省磁盘空间的使用。当生产端需要向kafka集群发送大量的超大数据(大于1M的数据)时可以通过开启压缩模式来减少传输过程中带来的网络消耗。

Kafka服务端使用的topic最终压缩模式(由compression.type决定)为producer

  • 建议客户升级客户端,保持和服务端一致
  • 使用低版本客户端时,禁用压缩

④FI651版本开始已经不在JVM参数中添加MaxDirectMemorySize⑤

Kafka使用直接内存作为了网络缓存使用,如果限制了直接内存并且在单条数据比较大(kafka单条消息大于1M)会出现直接内存溢出,如下server.log中的日志打印。

⑤旧版本的鉴权使用了kafka.security.auth.SimpleAclAuthorizer 的鉴权方式。鉴权的顺序是按照: 用户-用户组-角色的顺序进行鉴权,假设在鉴权过程中,用户和用户组没有权限但是角色有权限,那么在kafka的鉴权过程中会出现“用户鉴权失败-用户组鉴权失败-角色鉴权成功”这样的流程。

  • 建议使用后台用户鉴权,使用kafka-acl.sh 命令直接为用户名赋权。
  • 业务整改,使用“单业务,单用户”,删除无用的用户的数量。

⑥ldap所在节点的CPU使用率高,导致节点的鉴权性能下降(旧版本鉴权)

  • 如果ldap压力大可以扩容ldap实例,均衡id –Gn带来的压力
  • 增加group.cache.timeout.sec 的超时时间,可以让跟多的用户在缓存中保留更长时间,防止频繁的id –Gn。注意:这个参数有弊端,在更新鉴权信息后可能会导致响应有延迟。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。