apachestorm将任务分配给同一个执行线程

mo49yndu  于 2021-07-15  发布在  Storm
关注(0)|答案(1)|浏览(419)

我一直在为我的一个用例探索apachestorm。喷口将读取数据从我自己的Kafka实现,它将传递给螺栓。
我的拓扑结构对于单个消费群体的工作速度更快。如果我增加拓扑中使用者组的数量,我可以看到处理缓慢,尽管我有专门用于所有使用者组的每个分区的喷口和螺栓。
调试时,我发现在处理过程中发生了更多的上下文切换,因此记录了处理螺栓的线程名称。我可以看到,有时不同的执行器线程传递相同的螺栓id。
我怀疑,由于这可能会有上下文切换可能会发生,并由于cpu线程缓存错过,有可能在延迟增加。
我的假设是否正确。如果是这种行为,是否有任何选项可以通过同一个执行线程设置任务,而不是将其传递给另一个执行线程。

wd2eg0qa

wd2eg0qa1#

经过进一步的分析和调试,我发现在运行storm进程的vm中存在cpu窃取。因此,我想是否核心的数量将是一个问题。
因此,我在拥有大量内核的机器上运行了相同的进程,cpu占用率降低了,而且我的处理速度也没有变慢。所有这些问题似乎都与机器配置有关。

相关问题