Kafka性能调优 - Kafka优化的方法
今天,我们将讨论Kafka Performance Tuning。在本文“Kafka性能调优”中,我们将描述在设置集群配置时需要注意的配置。此外,我们将讨论Tuning Kafka Producers,Tuning Kafka Consumers和Tuning Kafka Brokers。
那么,让我们从Kafka Performance Tuning开始吧。
Kafka性能调优 - Kafka优化的方法
2. Kafka Performance Tuning是什么?
在我们讨论Kafka性能调优时,需要考虑的配置参数很少。因此,为了提高性能,最重要的配置是控制磁盘刷新率的配置。
此外,我们可以在组件的基础上划分这些配置。那么,让我们首先谈谈制片人。因此,生产者方面需要注意的最重要的配置是 -
- 压缩
- 批量大小
- 同步或异步
而且,在消费者方面,重要的配置是 -
- 获取大小
虽然,当我们考虑批量大小时,总是会混淆批量大小最佳。我们可以说,大批量可能很大,以获得高吞吐量,它带来延迟问题。这意味着延迟和吞吐量彼此成反比。
可能具有低吞吐量和高吞吐量,我们必须为使用队列时间或刷新间隔选择合适的批量大小以找到所需的正确平衡。
Kafka性能调整图
3.调整Kafka以获得最佳性能
更具体地说,调整涉及两个重要指标:延迟测量和吞吐量测量。延迟度量意味着处理一个事件需要多长时间,类似地,在特定时间内有多少事件到达,这意味着吞吐量度量。因此,大多数系统都针对延迟或吞吐量进行了优化,而Apache Kafka则对两者进行了平衡。此外,我们可以说,一个经过良好调整的Kafka系统只有足够的经纪人来处理主题吞吐量,因为在接收信息时需要处理信息所需的延迟。
一个。调整卡夫卡制片人
众所周知,Kafka使用异步发布/订阅模型。当我们的生产者调用send()命令时,返回的结果是未来。未来提供了检查过程中信息状态的方法。此外,当批处理准备就绪时,生产者将其发送给代理。基本上,代理等待事件,然后接收结果,并进一步响应事务完成。
对于延迟和吞吐量,两个参数对于Kafka性能调优尤其重要:
Apache Kafka用例| 卡夫卡应用程序
一世。批量大小
batch.size不是消息数,而是以总字节数来衡量批量大小。这意味着它在向Kafka代理发送消息之前控制要收集的数据字节数。因此,在不超出可用内存的情况下,将其设置为尽可能高。确保默认值为16384.
但是,如果我们增加缓冲区的大小,它可能永远不会满。在其他触发器的基础上,例如逗留时间(以毫秒为单位),Producer最终会发送信息。虽然通过将缓冲区批处理大小设置得太高,但我们可能会损害内存使用,这不会影响延迟。
而且,如果我们的制作人一直在发送,我们可能会获得最佳的吞吐量。此外,如果生产者经常闲置,我们可能没有编写足够的数据来保证当前的资源分配。
II。灵儿时间
为了在异步模式下缓冲数据,linger.ms设置最大时间。让我们通过一个例子来理解它,一次设置100个批次100ms的消息。这里,缓冲增加了消息传递延迟,但这提高了吞吐量。
阅读Apache Kafka Streams | 流处理拓扑
但是,默认情况下,生产者不会等待。因此,它会在数据可用时发送缓冲区。
此外,我们可以将linger.ms设置为5并在一个批次中发送更多消息,而不是立即发送。这将为发送的记录增加5毫秒的延迟,但也会减少发送的请求数,即使系统上的负载不能保证延迟。
因此,为了提高生产者的延迟和吞吐量,请增加linger.ms。
湾 调整卡夫卡经纪人
我们知道,主题分为几个分区。此外,每个分区都有一个领导者。此外,对于多个副本,大多数分区都写入领导者。但是,如果领导者没有得到适当的平衡,那么与其他人相比,可能会有人过度劳累。
因此,基于我们的系统或我们的数据有多重要,我们希望确保我们有足够的复制集来保存我们的数据。建议从每个物理存储磁盘一个分区和每个分区一个使用者开始。
阅读Apache Kafka Workflow | Kafka Pub-Sub Messaging
C。调整卡夫卡消费者
基本上,Kafka消费者可以创建吞吐量问题。主题的使用者数量必须等于分区数量。因为,为了处理跟上生产者所需的所有消费者,我们需要足够的分区。
在同一个消费者群体中,消费者将分区分开。因此,向组中添加更多消费者可以提高性能,同时添加更多消费者组不会影响性能。
而且,我们使用-replica.high.watermark.checkpoint.interval.ms的方式属性,可以影响吞吐量。此外,我们可以标记从分区读取时读取信息的最后一点。通过这种方式,如果我们必须返回并找到丢失的数据,我们有一个检查点可以向前移动而不必重新读取先前的数据。因此,如果我们为每个事件设置检查点水印,我们将永远不会丢失消息,但它会显着影响性能。此外,我们有一个安全边际,对吞吐量的影响要小得多,相反,我们将其设置为检查每百条消息的偏移量。
4. Kafka Tuning中的生产服务器配置
根据集群环境和机器配置的可用性,以下是我们可以修改的一些配置参数及其值 -
Kafka性能调优 - 生产服务器配置
一个。num.replica.fetchers
此参数定义将数据从leader复制到跟随者的线程数。根据线程的可用性,我们可以修改此参数的值。如果我们有可用的线程,那么让副本获取器的数量并行完成复制是很重要的。
湾 replica.fetch.max.bytes
此参数是关于我们想要从每个获取请求中的任何分区获取多少数据。增加此参数的值是很好的,这有助于在关注者中快速创建副本。
C。replica.socket.receive.buffer.bytes
如果我们有更少的线程可用于创建副本,我们可以增加缓冲区的大小。此外,如果复制线程与传入消息速率相比较慢,则有助于保存更多数据。
d。num.partitions
在实时使用Kafka时,我们应该注意这种配置。我们可以具有并行级别并行并行写入数据,这将自动增加吞吐量。
了解Storm Kafka与配置和代码的集成
但是,如果系统配置无法处理,那么增加分区数会降低我们的性能和吞吐量。基本上,如果系统没有足够的线程或只有单个磁盘,那么在创建大量分区以获得更好的吞吐量时没有意义。因此,我们可以说,为主题创建更多分区直接依赖于可用的线程和磁盘。
即 num.io.threads
基本上,我们在集群中有多少磁盘,它决定了I / O线程的设置值。此外,服务器使用这些线程来执行请求。因此,许多线程必须依赖于多个磁盘。
所以,这完全是关于Kafka Performance Tuning。希望你喜欢我们的解释。
5.结论:Kafka Performance Tuning
因此,我们已经看到了Kafka Performance调整的整个概念。此外,我们研究了Tuning Kafka Producer,Tuning Kafka Broker,调整Kafka Consumer。另外,我们讨论了5个生产服务器配置。
Kafka性能调优 - Kafka优化的方法的更多相关文章
- MySQL性能调优的10个方法 - mysql数据库栏目
摘要: https://edu.aliyun.com/a/29036?spm=5176.11182482.related_article.1.hbeZbF 摘要: MYSQL 应该是最流行了 WEB ...
- [大牛翻译系列]Hadoop(15)MapReduce 性能调优:优化MapReduce的用户JAVA代码
6.4.5 优化MapReduce用户JAVA代码 MapReduce执行代码的方式和普通JAVA应用不同.这是由于MapReduce框架为了能够高效地处理海量数据,需要成百万次调用map和reduc ...
- [大牛翻译系列]Hadoop(16)MapReduce 性能调优:优化数据序列化
6.4.6 优化数据序列化 如何存储和传输数据对性能有很大的影响.在这部分将介绍数据序列化的最佳实践,从Hadoop中榨出最大的性能. 压缩压缩是Hadoop优化的重要部分.通过压缩可以减少作业输出数 ...
- mysql性能调优——Query优化
上节谈了关于mysql锁定机制的优化方案,下面来谈一下Query优化——Mysql Query Optimizer 当Mysql Query Optimizer接受到从Query Parser过来的Q ...
- 【调优】kafka性能调优
主要优化原理和思路 kafka是一个高吞吐量分布式消息系统,并且提供了持久化.其高性能的有两个重要特点: 利用了磁盘连续读写性能远远高于随机读写的特点: 并发,将一个topic拆分多个partitio ...
- Kafka性能调优分析-线上环境篇
一.背景介绍: 在平时的开发中,使用kafka来发送数据已经非常熟悉,但是在使用的过程中,其实并没有比较深入的探索kafka使用过程中 一些参数配置,带来的损失可能就是没有充分的发挥出kfka的优势, ...
- kafka性能调优(转)
原文 https://blog.csdn.net/weixin_39478115/article/details/79155287 Broker参数配置 1.网络和io操作线程配置优化 # brok ...
- kafka性能调优
https://blog.csdn.net/u013063153/article/details/73826322
- <转>MySQL性能调优的10个方法
文章原地址:http://mp.weixin.qq.com/s/oRXJRz_Y5drmIrcbxSKOcw 1. 选择合适的存储引擎: InnoDB 除非你的数据表使用来做只读或者全文检索 (相信现 ...
随机推荐
- linux 判空处理
linux在进行判空是一个经常要用到的操作,可以使用如下方式: 变量通过" "引号引起来 if [ ! -n "$filename" ];then echo & ...
- gin内置验证器使用
gin内置验证器使用 func TopicUrl(f1 validator.FieldLevel) bool { return true //返回true表示验证成功 } func main(){ r ...
- PostgreSQL JSON 处理
1.JSON类型 PostgreSQL支持JSON和JSONB.这两种类型在使用上几乎完全一致,主要区别是: (1)JSON类型把输入的数据原封不动的存放到数据库中.JSONB类型在存放时把JS ...
- JavaScript开发——文件夹的上传和下载
我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 首先我们需要了解的是上传文件三要素: 1.表单提交方式:post (get方式提交有大小 ...
- WinDbg常用命令系列---日志操作相关命令log*
.logopen (Open Log File) .logopen命令将事件和命令的副本从调试器命令窗口发送到新的日志文件. .logopen [Options] [FileName] .logope ...
- win7虚拟机安装
https://blog.csdn.net/qq_16503045/article/details/81904986 iso下载地址 https://msdn.itellyou.cn/
- mysql开放远程连接
1.检查端口是否被监听,没有的话请启动mysql. netstat -atnp | grep 3306 2.检查用户是否具备远程连接,即host字段值不是 % mysql -uroot -p你的密码 ...
- mysql 获取学生个人科目平均分
mysql> select * from test; +----+----------+-------+-----------+ | id | name | score | subject | ...
- Maven中使用<version>LATEST</version>自动依赖最新版本引发的问题
今天在打包项目的过程中出现了编译问题,奇怪的是这个项目已经好久没有修改过了,报错如下. 找不到符号 [ERROR] 符号: 方法 intent(java.lang.String) [ERROR] 位置 ...
- Unity3D小知识
下载离线Unity3D官方文档 Unity同时打开多个场景(Multi-Scene editing) Unity将资源导出成package实现资源重用 Animator不一定只能用来做动画,也可以当状 ...