使用EDAS時,在啟動消費者Ali-tomcat時啟動失敗,Pandora container stopped. HSF服務啟動失敗
阿新 • • 發佈:2020-08-08
我開發使用的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.log
和localhost.log
日誌檔案,在查閱了日誌文件後發現是有同事的service的bean重複注入,導致啟動失敗,最後解決後項目正常啟動。
因此在發現不曉得的錯誤後,最好去這兩個日誌檔案頭去檢視一下。因為阿里的這個潘多拉容器會將我們的日誌配置檔案覆蓋掉,同時它們自己也有一個日誌配置。因此控制檯列印的資訊可能不全面。
網上其他的相似問題的解決方案:
- 解決方式一: 如果你使用的是Eclipse; 右鍵專案>properties>targeted runtimes>去掉 apache tomcat的勾
- 解決方式二: 由於本地啟動了多個專案,導致容器在進行臨時檔案同步時發生錯誤,解決辦法:在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