当前位置: 首页 > 知识库问答 >
问题:

Kafka流库会杀死空闲的流线程吗?

萧树
2023-03-14

比如说,KStream拓扑结构很简单:输入主题-

如果有一个应用程序实例使用num.stream运行。threads=4,所有4个StreamThreads都被利用。

如果启动了第二个实例(使用num.stream.threads=4),则流任务现在在这两个实例之间分配。第一个实例中的任务0_1和0_2,第二个实例中的任务0_3和0_4。

首先,kafka streams库是否会杀死目前运行0_3和0_4的线程?


共有1个答案

微生景胜
2023-03-14

对于输入主题只有4个分区的情况,当使用num.stream.threads=1启动8实例时会发生什么?

4个实例变得空闲但没有被杀死。如果任何其他已分配的实例出现故障,它们将保留并获得分配任务。

因此,当您在一个实例中启动多个步进时,会发生同样的事情。在您的情况下,2个实例中的8个步进,每个实例4个。相同的情况会发生,我将在上面解释。4个线程空闲并保持空闲,直到它通过其他实例获得任务。

更多参考:

  • 流-常见问题-可扩展性-最大并行度
  • kafka-流-内部-流线程

让我们举个例子。假设应用程序正在读取一个有5个分区的输入主题。我们可以在这里运行多少个应用程序实例?

简单的回答是,我们最多可以运行该应用程序的5个实例,因为该应用程序的最大并行度是5。如果我们运行的应用程序实例超过5个,那么“多余”的应用程序实例将成功启动,但仍处于空闲状态。如果其中一个繁忙实例停止工作,其中一个空闲实例将恢复前者的工作。

您可以通过参考以下内容设置度量来查看线程的更多信息

 类似资料:
  • 问题内容: 我想超时并杀死空闲的Redis客户端。有可以设置的设置吗?我似乎记得在某处设置配置,但似乎再也找不到了。 我希望这是自动完成的,而不是手动调用client kill命令。 问题答案: 查看Redis配置文件(用于启动Redis的文件)​​。 只需检查未注释掉的参数,然后更改超时参数以将非零值放入秒中即可。应该重新启动实例以考虑到此参数。 要在正在运行的Redis实例上更改此参数,可以使

  • 我使用java servlets和pgadmin9.1。问题是servlets中的连接没有正确关闭,所以如果它达到最大连接就会导致空白屏幕。我不希望每个用户都在pgadmin中扩展最大连接...我在servlet的开始和结束点使用了下面的查询,但它显示的错误是..由于管理员命令连接终止..

  • 问题内容: 当使用and 对象时(提交任务时),如果我为将来的get函数指定一个超时值,则抛出a时基础线程会被杀死吗? 问题答案: 它不是。为什么会这样?除非你告诉。 例如,在有Callable的情况下,存在一个非常有效的担忧。如果您等待结果说20秒钟却没有得到结果,那么您对结果不再感兴趣。那时您应该完全取消任务。 像这样:

  • 问题内容: 我有一个简单的程序,可以测试当模块不存在时是否能够引发异常。 有时我喜欢在另一个模块中使用此代码: 令人惊讶的是,当我以这种方式运行它时,它不起作用: 这种情况在Ubuntu中发生,并且在干净的CentOS 7.3中也发生。 问题答案: 您正在遇到“导入锁定”。 该文档提到了线程期间导入的限制,您违反了第一个限制(强调我的意思): 虽然导入机制是线程安全的,但是由于提供线程安全的方式存

  • > 我是Java多线程的新手。想知道线程池执行器中空闲线程的状态。它在RUNNABLE/WAITING中吗? 如果空闲线程处于RUNNABLE状态,新任务如何附加到空闲线程?AFAIK我们为线程/池分配一个可运行/可调用的对象。但我的问题是ThreadPoolExecitor如何将排队的可运行对象分配给空闲线程??

  • 本文向大家介绍python杀死一个线程的方法,包括了python杀死一个线程的方法的使用技巧和注意事项,需要的朋友参考一下 最近在项目中遇到这一需求: 我需要一个函数工作,比如远程连接一个端口,远程读取文件等,但是我给的时间有限,比如,4秒钟如果你还没有读取完成或者连接成功,我就不等了,很可能对方已经宕机或者拒绝了。这样可以批量做一些事情而不需要一直等,浪费时间。 结合我的需求,我想到这种办法: