异常分析:
tomcat启动的时候报错,提示无法使用8005端口,因为使用的默认端口,tomcat的8005端口是用来停止服务的。
因为是内网,无法放图,我只能把异常信息打印出来了:java.net.BindException: Cannot assign requested address(Bind failed)
问题原因:
可能出现问题的原因:
1、8005端口确实被占用了
2、socket大量创建,并没有被回收,具体参考:参考
3、服务器/etc/hosts 文件的localhost配置不是本机ip 或者不是 127.0.0.1 ,具体可以参考:参考
解决方案:
1、当怀疑是8005端口被占用的时候,我用root用户查看端口情况,如果发现被占用,则可以根据实际情况决定是更换tomcat 8005端口为其他端口还是kill掉占用端口的进程。具体命令如下:
代码语言:javascript复制netstat -lnp|grep 8005
这里我发现端口并没有被占用,而且我更改tomcat的conf目录下的server.xml文件,更改8005端口为6667端口,结果启动的时候还是提示6667端口无法使用。
2、当第一种解决不了的时候,我利用原因2的参考资料进行了socket回收:
代码语言:javascript复制sysctl -w net.ipv4.tcp_tw_recycle=1;
结果发现并不是这个原因
3、突然想到最近迁移了服务器,服务器IP都进行了更换,会不会有可能/etc/hosts的localhost映射的ip没进行更换。
所以直接
代码语言:javascript复制vim /etc/hosts
找到对应设置localdomain4的ip,更换成服务器更改后的ip , 重启服务器
代码语言:javascript复制reboot
重启服务器后,再重新启动tomcat,问题解决!
这里还应该注意看看 /etc/sysconfig/network-scripts/ 目录下的ifcfg-eth0 或者 ifcfg-lo文件的IP配置是否正确!
注意事项
一切操作以root用户操作。否则没权限!