我正在努力使项目更加稳定。问题在于,在某些情况下,使用与其他 API 通信的所有代码都停止工作。直到我重新启动tomcat,我必须每隔几个小时做一次(从4小时到几分钟,这似乎取决于用户数量)。同时,接受 GET(或任何其他)请求并且在其活动期间不联系其他服务器的代码 - 它继续工作。与其他服务器的通信丢失并且此服务器上的其他项目。
服务器 Ubuntu 12.04,nginx 1.12.0,tomcat 9.0.0.M26。服务器上有 12 个关于 java 的小项目。Spring 5.0.4.RELEASE,休眠 5.2.16.Final,(PostgreSQL)9.6.3
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
我还在不同的地方和不同的类型中遇到了许多其他错误,最常见的是 NPE(因为由于缺乏通信,我想要来自另一台服务器的对象 = null),有时我得到一个 HttpClientErrorException 和状态 400,尽管远程服务器总是响应状态为 200 的类似请求。在我本地的 tomcat 上,我从来没有遇到过类似的情况。我已经为这个问题困扰了很长时间,情况越来越糟(更多的用户 - 它打破得更快),我将不胜感激任何建议。我为谷歌翻译道歉。
来自 jstack 的线程转储 - threaddumps.log
下面是代码不起作用时的 jvisualvm 线程