我将代码库升级为从1.1.1开始使用Storm 2.0.0。现在,我观察到,如果我在本地模式下运行拓扑,几分钟后它将耗尽内存。
[THREAD ID = AsyncLocalizer执行程序-2-EventThread] Dev-APC180-local oassoazClientCnxn调用监视程序java.lang.OutOfMemoryError时出错:无法在java.lang.Thread.start0(本机方法)处创建新的本机线程org.apache.storm.shade.org上的java.lang.Thread.start(Thread.java:717)在org.apache.storm.shade.org.apache.zookeeper.ClientCnxn.start(ClientCnxn.java:421)上。 org.apache.storm.shade.org.apache.curator.utils.DefaultZookeeperFactory.newZooKeeper(DefaultZookeeperFactory.java:29)上的apache.zookeeper.ZooKeeper。(ZooKeeper.java:454)在org.apache.storm.shade.org .apache.curator.framework.imps.CuratorFrameworkImpl $ 2.newZooKeeper(CuratorFrameworkImpl.java:213)在org.apache.storm.shade.org.apache.curator.HandleHolder $ 1.getZooKeeper(HandleHolder.java:101)在org.apache org.apache的.storm.shade.org.apache.curator.HandleHolder.getZooKeeper(HandleHolder.java:57)在org.apache.storm.shade.org.apache.curator.ConnectionState.reset(ConnectionState.java:204)在org.apache .storm.shade.org.apac org.apache.storm.shade.org上的he.curator.ConnectionState.handleExpiredSession(ConnectionState.java:380)在org.apache.storm.shade.org.apache.curator.ConnectionState.checkState(ConnectionState.java:315)在org.apache.storm.shade.org。 org.apache.storm.shade.org.apache.zookeeper.ClientCnxn $ EventThread.processEvent(ClientCnxn.java:533)处的apache.curator.ConnectionState.process(ConnectionState.java:169)在org.apache.storm.shade处。 org.apache.zookeeper.ClientCnxn $ EventThread.run(ClientCnxn.java:508)
上面是错误的堆栈跟踪。在更深入的分析中,我发现“ AsyncLocalizer EventThread”和“ AsyncLocalizer SendThread”大约有5000个线程。它是由AsyncLocalizer.updateBlobs产生的。
AsyncLocalizer.updateBlobs是一个计划任务,每30秒运行一次。请指出正确的方向。我对错过的一切一无所知。
答案 0 :(得分:1)
这很可能是由于https://issues.apache.org/jira/browse/STORM-3501造成的。在2.0.0中破坏了Blob清理,因此主管一直尝试下载实际上已删除的Blob。我认为这也导致它启动了大量的Curator实例。