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

Storm Topology不是以并行性提示1200开头的

王航
2023-03-14
Version Info: 
   "org.apache.storm" % "storm-core" % "1.2.1" 
   "org.apache.storm" % "storm-kafka-client" % "1.2.1" 

我有一个带有3个螺栓(a、B、C)的Storm拓扑,其中中间螺栓的平均时间约为450ms,其他两个螺栓的平均时间不到1ms。

我能够使用以下并行度提示值运行拓扑:

A: 4 
B: 700
C: 10

但当我将并行度提示B增加到1200时,拓扑不会启动。

在拓扑日志中,我看到多次加载executor:B的日志,如下所示:

2018-05-18 18:56:37.462 o.a.s.d.executor main [INFO] Loading executor B:[111 111]
2018-05-18 18:56:37.463 o.a.s.d.executor main [INFO] Loaded executor tasks B:[111 111]
2018-05-18 18:56:37.465 o.a.s.d.executor main [INFO] Finished loading executor B:[111 111]
2018-05-18 18:56:37.528 o.a.s.d.executor main [INFO] Loading executor B:[355 355]
2018-05-18 18:56:37.529 o.a.s.d.executor main [INFO] Loaded executor tasks B:[355 355]
2018-05-18 18:56:37.530 o.a.s.d.executor main [INFO] Finished loading executor B:[355 355]
2018-05-18 18:56:37.666 o.a.s.d.executor main [INFO] Loading executor B:[993 993]
2018-05-18 18:56:37.667 o.a.s.d.executor main [INFO] Loaded executor tasks B:[993 993]
2018-05-18 18:56:37.669 o.a.s.d.executor main [INFO] Finished loading executor B:[993 993]
2018-05-18 18:56:37.713 o.a.s.d.executor main [INFO] Loading executor B:[765 765]
2018-05-18 18:56:37.714 o.a.s.d.executor main [INFO] Loaded executor tasks B:[765 765]

但在这段时间内,工作进程会重新启动。我在拓扑日志或Storm日志中没有看到任何错误。以下是工作人员重新启动时的Storm日志:

2018-05-18 18:51:46.755 o.a.s.d.s.Container SLOT_6700 [INFO] Killing eaf4d8ce-e758-4912-a15d-6dab8cda96d0:766258fe-a604-4385-8eeb-e85cad38b674
2018-05-18 18:51:47.204 o.a.s.d.s.BasicContainer Thread-7 [INFO] Worker Process 766258fe-a604-4385-8eeb-e85cad38b674 exited with code: 143
2018-05-18 18:51:47.766 o.a.s.d.s.Slot SLOT_6700 [INFO] STATE RUNNING msInState: 109081 topo:myTopology-1-1526649581 worker:766258fe-a604-4385-8eeb-e85cad38b674 -> KILL msInState: 0 topo:myTopology-1-1526649581 worker:766258fe-a604-4385-8eeb-e85cad38b674
2018-05-18 18:51:47.766 o.a.s.d.s.Container SLOT_6700 [INFO] GET worker-user for 766258fe-a604-4385-8eeb-e85cad38b674
2018-05-18 18:51:47.774 o.a.s.d.s.Slot SLOT_6700 [WARN] SLOT 6700 all processes are dead...
2018-05-18 18:51:47.775 o.a.s.d.s.Container SLOT_6700 [INFO] Cleaning up eaf4d8ce-e758-4912-a15d-6dab8cda96d0:766258fe-a604-4385-8eeb-e85cad38b674
2018-05-18 18:51:47.775 o.a.s.d.s.Container SLOT_6700 [INFO] GET worker-user for 766258fe-a604-4385-8eeb-e85cad38b674
2018-05-18 18:51:47.775 o.a.s.d.s.AdvancedFSOps SLOT_6700 [INFO] Deleting path /home/saurabh/storm-run/workers/766258fe-a604-4385-8eeb-e85cad38b674/pids/27798
2018-05-18 18:51:47.775 o.a.s.d.s.AdvancedFSOps SLOT_6700 [INFO] Deleting path /home/saurabh/storm-run/workers/766258fe-a604-4385-8eeb-e85cad38b674/heartbeats
2018-05-18 18:51:47.780 o.a.s.d.s.AdvancedFSOps SLOT_6700 [INFO] Deleting path /home/saurabh/storm-run/workers/766258fe-a604-4385-8eeb-e85cad38b674/pids
2018-05-18 18:51:47.780 o.a.s.d.s.AdvancedFSOps SLOT_6700 [INFO] Deleting path /home/saurabh/storm-run/workers/766258fe-a604-4385-8eeb-e85cad38b674/tmp
2018-05-18 18:51:47.781 o.a.s.d.s.AdvancedFSOps SLOT_6700 [INFO] Deleting path /home/saurabh/storm-run/workers/766258fe-a604-4385-8eeb-e85cad38b674
2018-05-18 18:51:47.782 o.a.s.d.s.Container SLOT_6700 [INFO] REMOVE worker-user 766258fe-a604-4385-8eeb-e85cad38b674
2018-05-18 18:51:47.782 o.a.s.d.s.AdvancedFSOps SLOT_6700 [INFO] Deleting path /home/saurabh/storm-run/workers-users/766258fe-a604-4385-8eeb-e85cad38b674
2018-05-18 18:51:47.783 o.a.s.d.s.BasicContainer SLOT_6700 [INFO] Removed Worker ID 766258fe-a604-4385-8eeb-e85cad38b674
2018-05-18 18:51:47.783 o.a.s.l.AsyncLocalizer SLOT_6700 [INFO] Released blob reference myTopology-1-1526649581 6700 Cleaning up BLOB references...
2018-05-18 18:51:47.784 o.a.s.l.AsyncLocalizer SLOT_6700 [INFO] Released blob reference myTopology-1-1526649581 6700 Cleaning up basic files...
2018-05-18 18:51:47.785 o.a.s.d.s.AdvancedFSOps SLOT_6700 [INFO] Deleting path /home/saurabh/storm-run/supervisor/stormdist/myTopology-1-1526649581
2018-05-18 18:51:47.808 o.a.s.d.s.Slot SLOT_6700 [INFO] STATE KILL msInState: 42 topo:myTopology-1-1526649581 worker:null -> EMPTY msInState: 0

这种情况一直在发生,拓扑从未重新启动,当并行度提示螺栓时,它会完美启动:B是700,没有其他变化。

我在这里看到一个有趣的日志,但还不确定这意味着什么:

工人进程766258fe-a604-4385-8eeb-e85cad38b674退出,代码: 143

有什么建议吗?

编辑:

配置:

topology.worker.childopts: -Xms1g -Xmx16g
topology.worker.logwriter.childopts: -Xmx1024m
topology.worker.max.heap.size.mb: 3072.0
worker.childopts: -Xms1g -Xmx16g -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1%ID% -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -XX:+UseG1GC -XX:+AggressiveOpts -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/home/saurabh.mimani/apache-storm-1.2.1/logs/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=1M -Dorg.newsclub.net.unix.library.path=/usr/share/specter/uds-lib/
worker.gc.childopts:
worker.heap.memory.mb: 8192
supervisor.childopts: -Xms1g -Xmx16g

编辑:

gist中的strace-fp PID-e trace=读、写、网络、信号、ipc的日志。

还不能完全理解,一些相关人士从中看到:

[pid 3362]open("/usr/lib/locale/UTF-8/LC_CTYPE",O_RDONLY)=-1 ENOENT(没有这样的文件或目录)

[pid 3362]杀死(1487,SIGTERM)=0

[pid 3362]关闭(1)

共有2个答案

萧晔
2023-03-14

我可以通过调整以下配置来运行它,似乎是因为nimbus而超时了。任务发射秒,设置为120秒,如果在120秒内未启动,则会重新启动工作进程。

其中一些配置的更新值:

drpc.request.timeout.secs: 1600
supervisor.worker.start.timeout.secs: 1200
nimbus.supervisor.timeout.secs: 1200
nimbus.task.launch.secs: 1200

关于nimbus.task.launch.sec:

任务初始启动时使用的特殊超时。在启动过程中,这是第一次心跳之前使用的超时时间,覆盖nimbus.task.timeout.secs.启动时存在单独的超时时间,因为启动新的JVM并配置它们可能会有相当大的开销。

孔寒
2023-03-14

快速谷歌建议143是JVM收到SIGTERM时的退出代码(例如,总是应用程序Java以“退出143”Ubuntu结尾)。你可能正在运行内存溢出,或者操作系统可能会因为其他原因终止进程。请记住,将并行提示设置为1200意味着你将获得螺栓B的1200个任务(副本),而你以前只有700个。

 类似资料:
  • 我正在尝试运行一个DynamoDB查询,该查询说我想要不以特定值开头的项目。我似乎找不到这样做的方法。 我尝试了以下4种评估方法,但都不管用。每一个都给我一个无效的运算符错误。 我已经尝试过的我的关键条件表达式如下所示: 如果删除not运算符,则会出现以下错误: KeyConditionExpressions每个键只能包含一个条件 在dynamodb中有这样做的方法吗?

  • 问题内容: 以下CSS的作用是什么? 问题答案: 这是无效的。是语法错误,因为CSS属性名称中未使用它(尽管CSS选择器中使用了CSS属性名称来选择具有s的元素)。大多数浏览器会(希望)忽略它,并且仅应用第一个规则。 可能是有人在尝试编写CSS注释。这是有效的方法: 编辑 我建议使用CSS重置文件解决浏览器差异。

  • 问题内容: 就像标题所说的那样,是否可以在XPath中选择仅以某个字符串开头但不以同一字符串结尾的元素? 例如,有3个锚元素: 我只想获取以’buy.php /’开头的锚元素。我认为以下内容不会起作用: 我怎样才能做到这一点? 问题答案: http://www.zvon.org/xxl/XSLTreference/Output/function_starts- with.html

  • 我负责改进应用程序的性能。我现在正考虑让某些事情并行运行。 如果它能有所帮助:我们使用Postgres作为我们的数据库,EclipseLink是我们的JPA提供程序。 这是通过 Dynatrace 可视化的请求执行(针对我们的 endpoint)的快照: 每个黄色条表示数据库中SQL查询的运行时间。 其中一些呼叫不相互依赖,可能同时发生。 例如,考虑前 9 个查询(从第一个 到最后一个 ,包括):

  • 问题内容: 我想问一些有关Hibernate创建的数据库序列的帮助。 我在我的实体类中有此批注-下面的代码- 为了对伙伴表有单独的顺序。我希望序列从1000开始,因为我在部署期间使用import.sql将测试数据插入到数据库中,并且希望避免违反约束。但是,当我要持久存储数据时,我遇到了违反约束的异常,它告知我partner_id = 2已经存在的事实。好像我错过了什么。 生成的序列如下所示: 我使

  • 我在CentOS 7中使用yum安装了MariaDB。 SonarQube抛出此异常: 当我用版本10重新安装MariaDB时,SonarQube仍然会抛出相同的异常。 SonarQube-5.5如何检测MySQL版本? MariaDB 10的API与MySQL 5.6兼容,CentOS 7已经用MariaDB取代了MySQL。 为什么它不支持MariaDB 10?