Điểm:0

Tomcat 8.5.29 ném EOFException với 500 Lỗi Máy chủ Nội bộ

lá cờ ng

Tôi đang cố gắng truy cập điểm cuối mùa xuân trong môi trường AWS-EKS, tôi không tạo lại sự cố này cục bộ nhưng trong nhật ký sản xuất, chúng tôi thấy rất nhiều Lỗi 500 Máy chủ Nội bộ với Ngoại lệ EOF bên dưới được ghi lại cùng một lúc:

logtype: máy chủ tomcat thông báo: Servlet.service() cho servlet [com.abc.platform.xservices.rest.abcApplication] trong ngữ cảnh có đường dẫn [/something] ném ngoại lệ [org.glassfish.jersey.server.ContainerException: java.io.EOFException: Unexpected EOF đọc trên ổ cắm] với nguyên nhân gốc rễ java.io.EOFException: Đọc EOF không mong đợi trên ổ cắm tại org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:722) tại org.apache.coyote.http11.Http11InputBuffer.access$300(Http11InputBuffer.java:40) tại org.apache.coyote.http11.Http11InputBuffer$SocketInputBuffer.doRead(Http11InputBuffer.java:1072)

Bất kỳ ý tưởng về lý do tại sao chúng ta thấy vấn đề này trong sản xuất? Cảm ơn.

Điểm:0
lá cờ lu

Đó là lỗi máy chủ nội bộ, trả về mã trạng thái 500 trong phản hồi

Điều này có thể do yêu cầu không chính xác gây ra, nhưng mã máy chủ hoặc tình trạng quá tải cũng có thể là lý do. Nếu bạn có quyền truy cập vào máy chủ, hãy kiểm tra nhật ký sự kiện.

Xem thêm

500 EOF khi mong đợi tiêu đề chunk

Tại sao LWP::UserAgent có thể không thành công với '500 EOF'?

500 EOF thay vì dòng trạng thái phản hồi trong tập lệnh perl

Lỗi Apache 1.3 - EOF không mong đợi khi đọc trạng thái HTTP - kết nối lại

Lỗi 500!

CẬP NHẬT Mặt khác, nếu đó không phải là thông báo phản hồi mà là một ngoại lệ thực sự, thì đó có thể chỉ là một lỗi, giống như trong java cũ Và cách giải quyết khác có thể là đặt getResponseCode() bên trong try/catch và gọi lần thứ hai nếu có ngoại lệ:

int mã phản hồi = -1;
    cố gắng {
        responseCode = con.getResponseCode();
    } bắt (IOException ex1) {
        // kiểm tra xem có phải là eof không, nếu có lấy lại mã
        if (-1 != ex1.getMessage().indexOf("EOF")) {
            cố gắng {
                responseCode = con.getResponseCode();
            } bắt (IOException ex2) {
                System.out.println(ex2.getMessage());
                //xử lý ngoại lệ
            }
        } khác {
            System.out.println(ex1.getMessage());
            //xử lý ngoại lệ
        }
    }

Nói về giới hạn số lượng kết nối, hãy đọc.

user3250064 avatar
lá cờ ng
Cảm ơn Alva, nếu chúng tôi sử dụng http 1.1 thì theo mặc định, nó sử dụng allowChunking là đúng.. có cách nào để tắt nó trong tệp cấu hình tomcat không? Ngoài ra, vấn đề này chỉ xảy ra trong prod env chứ không phải ở non-prod có cấu hình tomcat giống nhau nên rất khó hiểu. Cảm ơn cho đầu vào của bạn.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.