Tomcat 8.5.29 выдает исключение EOFException с внутренней ошибкой сервера 500

Tomcat 8.5.29 выдает исключение EOFException с внутренней ошибкой сервера 500

Я пытаюсь получить доступ к конечной точке Spring в среде AWS-EKS. Я не воссоздаю эту проблему локально, но в журналах производства мы видим внутреннюю ошибку сервера lot 500 с указанным ниже исключением EOF, зарегистрированным одновременно:

logtype: tomcat-server message: Servlet.service() для сервлета [com.abc.platform.xservices.rest.abcApplication] в контексте с путем [/something] выдал исключение [org.glassfish.jersey.server.ContainerException: java.io.EOFException: Неожиданное чтение EOF на сокете] с основной причиной java.io.EOFException: Неожиданное чтение EOF на сокете в org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:722) в org.apache.coyote.http11.Http11InputBuffer.access$300(Http11InputBuffer.java:40) в org.apache.coyote.http11.Http11InputBuffer$SocketInputBuffer.doRead(Http11InputBuffer.java:1072)

Есть идеи, почему мы видим эту проблему в производстве? Спасибо.

решение1

Это внутренняя ошибка сервера, которая возвращаеткод статуса 500 в ответе

Это может быть вызвано некорректными запросами, но также причиной может быть код сервера или перегрузка. Если у вас есть доступ к серверу, проверьте журналы событий.

Смотрите также

500 EOF, когда ожидается заголовок фрагмента

Почему LWP::UserAgent может завершаться ошибкой «500 EOF»?

500 EOF вместо строки статуса ответа в скрипте Perl

Ошибка Apache 1.3 - Неожиданный EOF при чтении HTTP-статуса - connectionreset

Ошибка 500!

ОБНОВЛЕНИЕ С другой стороны, если это не ответное сообщение, а настоящее исключение, то это может быть просто ошибка,как в старой 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
        }
    }

Разговор по лимиту количества подключений, читать.

Связанный контент