# 疑難解答
本頁列出了用戶使用Storm時遇到的問題及其解決方案.
### worker進程在啟動時崩潰,沒有堆棧跟蹤(stack trace)
可能的現象:
* Topologies 在單個節點工作正常, 但是多個節點時崩潰
解決方案:
* 可能部分節點網絡配置錯誤,其中節點無法根據其主機名定位其他節點. 當無法解析主機時,ZeroMQ該進程有時會崩潰. 有兩個解決方案:
* 在 /etc/hosts 文件中配置主機名與IP地址的映射表
* 設置內部DNS,以便節點可以根據主機名相互定位.
### 節點無法相互通信
可能的現象:
* 每個 spout tuple 都失敗了
* 處理不起作用
解決方案:
* Storm不適用于ipv6\. 你可以通過添加強制ipv4 `-Djava.net.preferIPv4Stack=true` 到 supervisor子選項 然后重啟supervisor.
* 可能部分節點網絡配置錯誤. 查看 `worker進程在啟動時崩潰,沒有堆棧跟蹤`的解決方案
### Topology在一段時間后停止處理tuple
現象:
* 處理工作正常工作一段時間,然后突然停止,并且spout tuple開始大量失敗.
解決方案:
* 這是ZeroMQ 2.1.10的已知問題. 降級至ZeroMQ 2.1.7
### Storm UI中supervisor節點顯示缺失
現象:
* Storm UI 查看部分 supervisor進程缺失
* Storm UI 在刷新時supervisors 列表會變化
解決方案:
* 確保supervisor本地目錄是獨立的(例如,不通過NFS共享本地目錄)
* 嘗試刪除supervisor的本地目錄并重新啟動守護進程. supervisor啟動時為自己創建一個唯一的ID,并將其存儲在本地. 當該id被復制到其他節點時,Storm會感到困惑.
### "Multiple defaults.yaml found" 錯誤
現象:
* 當使用 "storm jar" 部署topology時發生上述錯誤
解決方案:
* 很有可能在您的topology jar中包含有Storm相關jar. 當打包 topology jar時, 不要包含 Storm jars ,Storm 會自動將相關的jar包加入classpath中.
### 運行storm jar 發生 "NoSuchMethodError"
現象:
* 當運行 storm jar發生奇怪的 "NoSuchMethodError"錯誤
解決方案:
* 您正在使用與構建topology不同的Storm版本來部署topology. 確保您使用的Storm客戶端與您編譯topology的版本相同
### Kryo 并發修改異常(ConcurrentModificationException)
現象:
* 運行時異常堆棧跟蹤如下:
```
java.lang.RuntimeException: java.util.ConcurrentModificationException
at org.apache.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:84)
at org.apache.storm.utils.DisruptorQueue.consumeBatchWhenAvailable(DisruptorQueue.java:55)
at org.apache.storm.disruptor$consume_batch_when_available.invoke(disruptor.clj:56)
at org.apache.storm.disruptor$consume_loop_STAR_$fn__1597.invoke(disruptor.clj:67)
at org.apache.storm.util$async_loop$fn__465.invoke(util.clj:377)
at clojure.lang.AFn.run(AFn.java:24)
at java.lang.Thread.run(Thread.java:679)
Caused by: java.util.ConcurrentModificationException
at java.util.LinkedHashMap$LinkedHashIterator.nextEntry(LinkedHashMap.java:390)
at java.util.LinkedHashMap$EntryIterator.next(LinkedHashMap.java:409)
at java.util.LinkedHashMap$EntryIterator.next(LinkedHashMap.java:408)
at java.util.HashMap.writeObject(HashMap.java:1016)
at sun.reflect.GeneratedMethodAccessor17.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:959)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1480)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
at org.apache.storm.serialization.SerializableSerializer.write(SerializableSerializer.java:21)
at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:554)
at com.esotericsoftware.kryo.serializers.CollectionSerializer.write(CollectionSerializer.java:77)
at com.esotericsoftware.kryo.serializers.CollectionSerializer.write(CollectionSerializer.java:18)
at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:472)
at org.apache.storm.serialization.KryoValuesSerializer.serializeInto(KryoValuesSerializer.java:27)
```
解決方案:
* 這意味著您將一個可變對象作為 output tuple發出. 發送到output collector的一切對象都必須是不可變的.當對象被序列化以通過網絡發送時您的bolt同時正在修改對象.
- Storm 基礎
- 概念
- Scheduler(調度器)
- Configuration
- Guaranteeing Message Processing
- 守護進程容錯
- 命令行客戶端
- Storm UI REST API
- 理解 Storm Topology 的 Parallelism(并行度)
- FAQ
- Layers on Top of Storm
- Storm Trident
- Trident 教程
- Trident API 綜述
- Trident State
- Trident Spouts
- Trident RAS API
- Storm SQL
- Storm SQL 集成
- Storm SQL 示例
- Storm SQL 語言參考
- Storm SQL 內部實現
- Flux
- Storm 安裝和部署
- 設置Storm集群
- 本地模式
- 疑難解答
- 在生產集群上運行 Topology
- Maven
- 安全地運行 Apache Storm
- CGroup Enforcement
- Pacemaker
- 資源感知調度器 (Resource Aware Scheduler)
- 用于分析 Storm 的各種內部行為的 Metrics
- Windows 用戶指南
- Storm 中級
- 序列化
- 常見 Topology 模式
- Clojure DSL
- 使用沒有jvm的語言編輯storm
- Distributed RPC
- Transactional Topologies
- Hooks
- Storm Metrics
- Storm 狀態管理
- Windowing Support in Core Storm
- Joining Streams in Storm Core
- Storm Distributed Cache API
- Storm 調試
- 動態日志級別設置
- Storm Logs
- 動態員工分析
- 拓撲事件檢查器
- Storm 與外部系統, 以及其它庫的集成
- Storm Kafka Integration
- Storm Kafka 集成(0.10.x+)
- Storm HBase Integration
- Storm HDFS Integration
- Storm Hive 集成
- Storm Solr 集成
- Storm Cassandra 集成
- Storm JDBC 集成
- Storm JMS 集成
- Storm Redis 集成
- Azue Event Hubs 集成
- Storm Elasticsearch 集成
- Storm MQTT(Message Queuing Telemetry Transport, 消息隊列遙測傳輸) 集成
- Storm MongoDB 集成
- Storm OpenTSDB 集成
- Storm Kinesis 集成
- Storm Druid 集成
- Storm and Kestrel
- Container, Resource Management System Integration
- Storm 高級
- 針對 Storm 定義一個不是 JVM 的 DSL
- 多語言協議
- Storm 內部實現
- 翻譯進度