2015-11-04 41 views
0

我正在使用JmsSpout和BaseBasicBolt。 所有的螺栓都被夾緊,但很多(大約一半)的噴嘴出現故障。 可能的原因是什麼? 或者我該如何記錄郵件失敗的原因? JmsSpout只是打印哪個消息失敗,沒有錯誤信息。爲什麼所有的螺栓都會發生故障,但是噴嘴出現故障?

+0

經過幾次重啓,它變得很神奇,仍然無法找到原因。 – Solo

回答

1

如果你沒有主動fail()元組螺栓,元組失敗的唯一原因是超時。 Storm中的默認超時時間爲30秒(可以通過TOPOLOGY_MESSAGE_TIMEOUT_SECS進行配置)。如果一個元組發出,Storm等待超時持續時間以接收一個確認。如果在此持續時間內未收到確認,則Strom將失敗該元組。

增加超時可以解決問題(應該將超時設置爲比預期的處理延遲更大的值)。

如果您的預期處理延遲時間已經低於超時值,則表示您在拓撲結構中存在瓶頸。因此,一個(或多個)運算符不能足夠快地處理傳入的元組。因此,傳入的元組會在輸入隊列中被緩衝,從而隨着隊列隨時間增長而增加延遲。您需要增加瓶頸運營商的並行性來解決問題。