我们使用带有嵌入式tomcat的springboot 1.3.3.RELEASE . 该服务使用java 1.8.0_45在redhat Linux 2.6.32(64位)上运行 .

在我们的加载环境中,我们注意到服务器已启动(java VM仍在运行)并响应非HTTP请求,但是通过SpringMVC Rest公开的HTTP请求不起作用,我们得到超时 .

在比较 Health 系统和不 Health 系统之间的线程转储之后,我们注意到在一个不 Health 的系统中缺少http-nio- -Acceptor线程 .

特别是从 Health 的机器中显示的转储从坏的丢失 .

“http-nio-8080-Acceptor-0”#45 daemon prio = 5 os_prio = 0 tid = 0x00007f13fb9ef800 nid = 0x896b runnable [0x00007f146f3f4000] java.lang.Thread.State:RUNNABLE at sun.nio.ch.ServerSocketChannelImpl.accept0 (本地方法)at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:422)at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:250) - locked <0x00000005cd5d0558>(java.lang.Object )atg.apache.tomcat.util.net.NioEndpoint $ Acceptor.run(NioEndpoint.java:682)at java.lang.Thread.run(Thread.java:745)

什么可能是Acceptor线程丢失的原因?是否可以重新启动威胁,而无需重新启动整个应用程序?这是我们无法为HTTP请求提供服务的原因吗?