Estoy intentando acceder al punto final de Spring en el entorno AWS-EKS. No voy a recrear este problema localmente, pero en los registros de producción vemos el error interno del servidor 500 con la siguiente excepción EOF registrada al mismo tiempo:
logtype: mensaje del servidor tomcat: Servlet.service() para el servlet [com.abc.platform.xservices.rest.abcApplication] en contexto con la ruta [/something] arrojó una excepción [org.glassfish.jersey.server.ContainerException: java. io.EOFException: lectura de EOF inesperada en el socket] con causa raíz java.io.EOFException: lectura de EOF inesperada en el socket en org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:722) en org.apache. coyote.http11.Http11InputBuffer.access$300(Http11InputBuffer.java:40) en org.apache.coyote.http11.Http11InputBuffer$SocketInputBuffer.doRead(Http11InputBuffer.java:1072)
¿Alguna idea de por qué vemos esto en problemas en producción? Gracias.
Respuesta1
Es un error interno del servidor, que devuelvecódigo de estado 500 en respuesta
Esto puede deberse a solicitudes incorrectas, pero también el código del servidor o la sobrecarga pueden ser la razón. Si tiene acceso al servidor, consulte los registros de eventos.
Ver también
500 EOF cuando se esperaba un encabezado de fragmento
¿Por qué LWP::UserAgent podría estar fallando con '500 EOF'?
500 EOF en lugar de la línea de estado de respuesta en el script Perl
Error de Apache 1.3: EOF inesperado leyendo el estado HTTP - restablecimiento de la conexión
ACTUALIZAR Por otro lado, si no es un mensaje de respuesta, sino una excepción real, entonces puede ser simplemente un error.como en el viejo java Y la solución alternativa puede ser poner getResponseCode() dentro de try/catch y llamar por segunda vez en caso de excepción:
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
}
}
Hablando por límite de número de conexiones, lee.