这两天遇到了一个服务启动完毕,但是通过浏览器访问不到的情况。记录一下排查过程:
ping
服务器ip,确认网络问题,网络通畅√telnet ip port
,确认端口开放,端口可以访问√- 查看系统日志,看看是不是启动过程有报错导致服务启动失败,日志里没有明显的异常信息。
- 通过
top
命令查看一下当前服务器cpu、内存、loadaverage等的状态,同时再次确认是否存在java进程,cpu、内存、loadaverage都没有明显异常√ - 通过
jps -v|grep 关键字
定位pid
,√ top -p pid
然后按H
,查看线程情况,确认是否存在cpu占用过高的线程,没有异常线程√- 到此为止,没有发现任何异常信息
- 通过
jstack pid
查看一下当前服务的线程的dump - 发现问题,是主线程启动过程中出现了一些业务逻辑的死循环,导致服务看起来貌似是启动完毕了,但是实际上并没有启动完毕。导致服务无法被访问