我们在Tomcat 8上部署了一个服务。它通常运行良好,但据观察,tomcat有时会突然崩溃。今天,当它发生时,我发现了以下日志:
SEVERE org.apache.tomcat.util.net.NioEndpoint$Acceptor.run
java.lang.OutOfMemoryError: Java Heap Space
我想,当服务尝试命中POST请求时会发生这种情况。相同的代码如下:
URL obj = new URL(url);
HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("User-Agent", USER_AGENT);
con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
con.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeBytes(urlParameters);
wr.flush();
wr.close();
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
tomcats崩溃的原因是什么?是因为以下任何原因吗?
outputstream and inputstream
等大多数资源都没有关闭?- HttpsURLConnection
con
是否未关闭/断开连接?- 如果是这样,那么为什么每次都不会发生。事实上,这是在超过几个月内第一次观察到的。
- 我也看到OME被ByteArray抛出或类似的东西。不确定。只记得看到的东西。
- 除日志外,还发现以下异常: 线程“AsyncFileHandlerWriter - #######”
中的异常 醇>
我现在陷入困境,并担心这种情况可能再次发生。我需要找到相同的根本原因。任何有关相同的帮助或建议都非常有用。