Я пытаюсь получить доступ к конечной точке spring в среде AWS-EKS, я не воссоздаю эту проблему локально, но в производственных журналах мы видим много 500 Internal Server Error with below EOF Exception logged at same time:
logtype: tomcat-server сообщение: Servlet.service() for servlet [com.abc.platform.xservices.rest.abcApplication] in context with path [/something] threw exception [org.glassfish.jersey.server.ContainerException: java.io.EOFException: Unexpected EOF read on the socket] с первопричиной java.io.EOFException: Неожиданное чтение EOF на сокете at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:722) at org.apache.coyote.http11.Http11InputBuffer.access$300(Http11InputBuffer.java:40) at org.apache.coyote.http11.Http11InputBuffer$SocketInputBuffer.doRead(Http11InputBuffer.java:1072)
Есть идеи, почему мы видим эту проблему на производстве? Спасибо.
Это внутренняя ошибка сервера, которая возвращает код состояния 500 в ответ
Это может быть вызвано некорректными запросами, но также причиной может быть код сервера или перегрузка. Если у вас есть доступ к серверу, проверьте журналы событий.
См. также
500 EOF при ожидаемом заголовке фрагмента
Почему LWP::UserAgent может дать сбой с '500 EOF'?
500 EOF вместо строки состояния ответа в скрипте perl
Ошибка Apache 1.3 - Неожиданное чтение EOF-статуса HTTP - connectionreset
UPDATE С другой стороны, если это не ответное сообщение, а настоящее исключение, то это может быть просто баг, как и в старой java И обходной путь может заключаться в том, чтобы поместить getResponseCode() внутрь try/catch и вызвать второй раз при исключении:
int responseCode = -1;
try {
responseCode = con.getResponseCode();
} catch (IOException ex1) {
//check if it's eof, if yes retrieve code again
if (-1 != ex1.getMessage().indexOf("EOF")) {
try {
responseCode = con.getResponseCode();
} catch (IOException ex2) {
System.out.println(ex2.getMessage());
// handle exception
}
} else {
System.out.println(ex1.getMessage());
// handle exception
}
}
Говоря об ограничении количества подключений, прочтите.