问题描述
在一个服务器部署Tomcat时,发生端口占用冲突的异常。
错误: 代理抛出异常错误: java.rmi.server.ExportException: Port already in use: 65333; nested exception is: java.net.BindException: Address already in use: JVM_Bind
问题分析
检查端口是否被占用:netstat -tunlp | grep 65333
- 根据pid(进程id)找到对应的应用,解决端口占用冲突
- 非root用户可能看不到占用该端口的相应进程
解决方法
- 杀掉端口占用的进程,重启tomcat:kill -9 PID
- 修改${TOMCAT_HOME}/bin/catalina.sh启动文件中的JVM配置:
JAVA_OPTS="-server -Xms2048m -Xmx2048m -XX:PermSize=512m -XX:MaxPermSize=512m -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.pwd.file=/opt/app/appcode/jmxremote.password -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=65333"
将端口65333修改成对应的没有被占用的其他端口后,重启tomcat即可