Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 风暴喷口/拓扑性能_Java_Apache Storm - Fatal编程技术网

Java 风暴喷口/拓扑性能

Java 风暴喷口/拓扑性能,java,apache-storm,Java,Apache Storm,我对ApacheStorm的性能有一个问题,主要是从喷口 我有一个从红隼队列中发射物品的拓扑结构。我提取了大约2000个项目,每次在喷口中调用nextTuple,我就会发出一个项目 在我的i7 Macbook Pro上的本地集群中运行时,我发现我每秒会发出大约20个元组,风暴会每50毫秒调用一次nextTuple 我使用1个喷口任务和1个喷口执行器运行。我已将setmaxpoutpending设置为10 为什么每次调用nextTuple之间都有如此大的时间间隔?outputCollector是否

我对ApacheStorm的性能有一个问题,主要是从喷口

我有一个从红隼队列中发射物品的拓扑结构。我提取了大约2000个项目,每次在喷口中调用
nextTuple
,我就会发出一个项目

在我的i7 Macbook Pro上的本地集群中运行时,我发现我每秒会发出大约20个元组,风暴会每50毫秒调用一次
nextTuple

我使用1个喷口任务和1个喷口执行器运行。我已将
setmaxpoutpending
设置为10

为什么每次调用
nextTuple
之间都有如此大的时间间隔?outputCollector是否在发出新元组之前等待每个元组的回音

我正在从文档中运行java 8和storm版本0.9.4

Storm在同一线程上执行ack、fail和nextTuple。这意味着ISpout的实现者不需要担心这些方法之间的并发问题。然而,这也意味着实现者必须确保nextTuple是非阻塞的:否则该方法可能会阻塞待处理的ack和fails

提示1:调用nextTuple时发出1个元组。 提示2:不要在nextTuple中获取数据,在单独的线程中获取数据,并使用任何并发队列推送和轮询数据,这样nextTuple将只轮询数据。 提示3:尝试将setMaxSpoutPending设置为1。
提示4:确保每个螺栓的执行(元组)方法都经过优化。

您的模式非常不正确。。。您应该只从队列中获取一个元组,或者发出获取的所有2000个元组。这将遵循Storm的设计

使用额外的螺纹不符合Storm的设计。没有理由不想同时发出所有2000个元组

是的,如果您在喷口中分配消息ID并设置
max.Spout.pending
Storm,则只要有10个以上的元组在运行中,即未确认,它就不会执行对
Spout.nextTuple()
的下一次调用