1. 程式人生 > 實用技巧 >使用EDAS時,在啟動消費者Ali-tomcat時啟動失敗,Pandora container stopped. HSF服務啟動失敗

使用EDAS時,在啟動消費者Ali-tomcat時啟動失敗,Pandora container stopped. HSF服務啟動失敗

我開發使用的IntelliJIdea, 找到當前問題所在是在其tomcat日誌檔案中發現的,因此若你還沒去檢視過該日誌檔案建議去檢視。該日誌檔案路徑在: C:\Users\tom\.IntelliJIdea2017.3\system\tomcat\專案名\logs


在使用阿里的EDAS時,開發中啟動消費者的web專案無法啟動,控制檯列印如下資訊:

INFO: spas-client-initializer start
JM.Log:INFO Init JM logger with Log4jLoggerFactory
JM.Log:INFO Log root path: C:\Users\tom\logs\
JM.Log:INFO Set pandora log path: C:\Users\tom\logs\pandora
2018-07-06 18:21:33,391 com.taobao.tomcat.container.context.pandora.PandoraManager startInternal
INFO: Pandora container started.
log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
2018-07-06 18:21:41,283 org.apache.catalina.core.StandardContext startInternal
SEVERE: Error listenerStart
2018-07-06 18:21:41,287 org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [] startup failed due to previous errors
2018-07-06 18:21:41,436 com.taobao.tomcat.container.context.pandora.PandoraManager getPandoraLocation
INFO: found pandora location from system property: D:\devtools\taobao-tomcat-7.0.59\deploy\taobao-hsf.sar
2018-07-06 18:21:41,437 com.taobao.tomcat.container.context.pandora.PandoraManager stopInternal
INFO: Stopping pandora container: D:\devtools\taobao-tomcat-7.0.59\deploy\taobao-hsf.sar
[EagleEye][INFO] SelfLog async thread is exited
[EagleEye][INFO] closed AsyncAppender: AsyncAppender [appender=EagleEyeRollingFileAppender [filePath=C:\Users\tom\logs\eagleeye\eagleeye-self.log]]
INFO: spas-client-initializer stop
2018-07-06 18:21:41,853 com.taobao.tomcat.container.context.pandora.PandoraManager stopInternal
INFO: Pandora container stopped.
[2018-07-06 06:21:41,879] Artifact Skyecho-Web-New:war exploded: Error during artifact deployment. See server log for details.

根據提示去檢視logs\eagleeye\eagleeye-self.log日誌檔案發現裡面有如下錯誤:

[ERROR] failed to add tracing to RxJava.
java.lang.NoClassDefFoundError: io/reactivex/functions/Consumer
at com.taobao.eagleeye.EagleEye.addRxJavaTracing(EagleEye.java:506)
at com.taobao.eagleeye.EagleEye.init(EagleEye.java:585)
at com.taobao.eagleeye.EagleEye.init(EagleEye.java:616)
at com.taobao.eagleeye.EagleEye.<clinit>(EagleEye.java:529)
at com.taobao.eagleeye.EagleEyePandoraService.init(EagleEyePandoraService.java:37)
......
......
......
Caused by: com.taobao.pandora.common.exception.PandoraLoaderException: [Module-Loader] eagleeye-core: can not load class {io.reactivex.functions.Consumer} after all phase.
......
......

但是看了錯誤提示後一臉懵逼,不曉得如何解決,網上查了很久還是無果。最後又返回阿里官方文件去一個個的查閱,官方文件說tomcat啟動失敗時,請去檢視tomcat的catalina.loglocalhost.log日誌檔案,在查閱了日誌文件後發現是有同事的service的bean重複注入,導致啟動失敗,最後解決後項目正常啟動。

因此在發現不曉得的錯誤後,最好去這兩個日誌檔案頭去檢視一下。因為阿里的這個潘多拉容器會將我們的日誌配置檔案覆蓋掉,同時它們自己也有一個日誌配置。因此控制檯列印的資訊可能不全面。


網上其他的相似問題的解決方案:

  1. 解決方式一: 如果你使用的是Eclipse; 右鍵專案>properties>targeted runtimes>去掉 apache tomcat的勾
  2. 解決方式二: 由於本地啟動了多個專案,導致容器在進行臨時檔案同步時發生錯誤,解決辦法:在tomcat的啟動引數上加上 -Dcom.taobao.pandora.tmp_path=D:\logs\pandoralog\coustomer-log 後面那個是你自己定義的一個路徑。

HSF-0016,服務啟動失敗,控制列印的錯誤碼HSF-0016;解決方案:

檢查12200埠是否有衝突,一般 Server Bind 失敗會造成啟動失敗。
多網絡卡且存在外網 IP 機器,通過-Dhsf.server.ip 來指定本地 IP。

現在阿里雲HSF的官方文件已經比較完善,可以在到官方文件上去找對應的錯誤 https://help.aliyun.com/document_detail/142956.html