java - Tomcat 在尝试发送 HTTP 请求时崩溃并出现 java.lang.OutOfMemory 错误
问题描述
我们在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();
Tomcat崩溃的原因可能是什么?是因为以下任何一个原因吗?
- 大部分资源之类
outputstream and inputstream
的都没有关闭?- HttpsURLConnection
con
也没有关闭/断开连接?- 如果是这样,那为什么它不会每次都发生。事实上,这是两个多月以来第一次观察到这种情况。
- 我还看到 OME 是由 ByteArray 或类似的东西抛出的。不确定。只记得看到了一些东西。
- 除了日志,还看到了以下异常:线程“AsyncFileHandlerWriter-#######”中的异常
我现在被困住了,担心这种情况可能会再次发生。我需要找到同样的根本原因。任何有关相同的帮助或建议都会非常有用。
解决方案
推荐阅读
- git - GIT 变基问题
- python - 如何将字典一一追加到json文件中?
- reactjs - 在 Redux 中,为什么要检查所有 reducer 是否要执行一个案例?
- escaping - 在 loadrunner 中发送带引号的文件名参数
- c++ - std::sqrt 是否与 C++ 中的 sqrt 相同
- python-3.x - 尝试在 TFIDF 向量上计算余弦相似度矩阵时出现内存错误
- python-3.x - python:如何获取一个班级的所有学生并将其保存到一个地方?
- kubernetes - Kubernetes CRDs - 参考现有的验证规范
- python - python中两个具有相同值的不同字符串对象
- druid - Druid 0.17 原生并行摄取与 orc 文件