早上上班,同事反應服務上不去,后台看了一下,發現tomcat掛掉了,重新啟動tomcat時報錯。
ERROR: transport error 202: bind failed: Address already in use
可能是異常關閉,系統沒有正常關閉應用的運行環境。
各種調整server.xml里的參數都沒有用。
在網上查到兩個解決方法,不過都和我實際情況不一致。最后結合二種方法解決問題。
- 啟動tomcat時ERROR: transport error 202: bind failed: Address already in use server.xml的端口已經改掉.不會產生沖突
在http://forums.terracotta.org/forums/posts/list/857.page找到解決方法
Thanks Orion! That was just the pointer I needed. It turns out that I had a weird bit of leftover configuration in my environment variables that was causing the -Xdebug settings to be mis-configured when they were included during startup. I removed the JAVA_OPTS value from my settings and everything works properly now. Many thanks.
發現在tomcat/bin/catalina.sh中有如下:
CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=12343"
將 address=12343 改為其他,問題解決…
http://www.codeif.com/post/561/
- 今天上預發布。由於將排期模塊從jar包依賴的方式獨立成http服務,所在copy一份tomcat出來。
結果啟動tomcat的時候,直接出現如下錯誤:
復制代碼 1 ERROR: transport error 202: bind failed: Address already in use 2 ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510) 3 JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:750] 4 FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)
一開始沒有仔細看,以為http端口被占用(因為是拷貝過來的tomcat,當然先考慮的就是忘記改配置文件了)。查看端口占用情況,發現http端口並沒有被使用,所以又回來仔細看了一下日志。
這是這些年第一次遇到的錯誤,以前沒有類似經歷。不過,看着像是遠程debug功能開啟了導致的端口占用。經過確認,發現startup.sh的最后一行,確實如此:
1 exec "$PRGDIR"/"$EXECUTABLE" jpda start "$@"
最后由於是新上線的應用,所以暫時不需要debug功能。如果是正式環境,debug功能更是不會開啟的。所以,改成下面的就可以了(就是關閉tomcat遠程調試功能)
1 exec "$PRGDIR"/"$EXECUTABLE"start "$@"
Job done!
來自 <http://www.cnblogs.com/ifudon/p/4750919.html>
解決方法
在bin/startup.sh中最后一行,發現了CATALINA_OPTS設置項,把address改為其他,再重啟就正常了。