Рейтинг:0

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

флаг ng

Я пытаюсь получить доступ к конечной точке spring в среде AWS-EKS, я не воссоздаю эту проблему локально, но в производственных журналах мы видим партию 500 Internal Server Error с ниже зарегистрированным исключением EOF:

тип журнала: tomcat-сервер сообщение: Servlet.service() для сервлета [com.abc.platform.xservices.rest.abcApplication] в контексте пути [/something] вызвало исключение [org.glassfish.jersey.server.ContainerException: java.io.EOFException: Unexpected 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)

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

Рейтинг:0
флаг lu

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

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

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

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

Почему LWP::UserAgent может дать сбой с «500 EOF»?

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

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

Ошибка 500!

ОБНОВЛЕНИЕ С другой стороны, если это не ответное сообщение, а настоящее исключение, то это может быть просто ошибка, как в старой джаве И обходной путь может заключаться в том, чтобы поместить getResponseCode() внутри try/catch и вызвать второй раз при исключении:

интервал кода ответа = -1;
    пытаться {
        responseCode = con.getResponseCode();
    } поймать (IOException ex1) {
        //проверить, является ли это eof, если да, снова получить код
        если (-1!= ex1.getMessage().indexOf("EOF")) {
            пытаться {
                responseCode = con.getResponseCode();
            } поймать (IOException ex2) {
                System.out.println(ex2.getMessage());
                // обработка исключения
            }
        } еще {
            System.out.println(ex1.getMessage());
            // обработка исключения
        }
    }

Говоря об ограничении количества подключений, читайте.

user3250064 avatar
флаг ng
Спасибо Альва, если мы используем Http 1.1, то по умолчанию он использует allowChunking как true. Есть ли способ отключить его в конфигурационных файлах tomcat? также эта проблема возникает только в prod env, а не в non-prod, который имеет такие же конфигурации tomcat, поэтому его трудно понять. Спасибо за ваш вклад.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.