2012-05-14 34 views
5

Tôi đã xây dựng một máy chủ TCP đơn giản sử dụng Netty và tôi muốn chuẩn nó với JMeter. Tôi đang sử dụng một JMeter TCP Sampler, sử dụng tên lớp BinaryTCPClientImpl để gửi byte. Tôi đã kiểm tra "không có sự chậm trễ" và "tái sử dụng kết nối". Tôi cho rằng đây là SO_NODELAY và SO_REUSEADDR. Tôi đang chạy 75 chủ đề, mỗi luồng thực hiện 1000 yêu cầu TCP. Tôi luôn nhìn thấy khoảng 11% yêu cầu thất bại với:Netty + JMeter, lỗi khi tái sử dụng kết nối

500 java.net.SocketException: Phần mềm kết nối gây ra hủy bỏ: ổ cắm ghi lỗi

Nếu tôi bỏ chọn "tái sử dụng kết nối", sau đó tất cả 75.000 yêu cầu thành công mà không có một lỗi duy nhất, nhưng thông lượng chỉ là ~ 33% của nó là gì.

Có điều gì tôi cần làm với máy chủ Netty của mình để ngăn chặn các lỗi này không?

Trả lời

0

Tôi nên lưu ý máy chủ của tôi hoạt động như thế này: chấp nhận kết nối, nhận một số dữ liệu, gửi một số dữ liệu, sau khi dữ liệu được gửi sẽ đóng kết nối. Tài liệu JMeter nói TCP Sampler đóng kết nối trừ khi "tái sử dụng socket" được kiểm tra, vì vậy tôi đoán đây không phải là SO_REUSEADDR. Tôi giả định trong một số trường hợp máy khách gửi dữ liệu, nhận dữ liệu và trước khi máy chủ đóng socket, máy khách cố gắng gửi dữ liệu một lần nữa, sau đó máy chủ đóng socket và JMeter nghĩ rằng yêu cầu thất bại.

Vì vậy, giải pháp là không kiểm tra "địa chỉ sử dụng lại". Đóng socket mỗi yêu cầu được mong đợi hành vi, như khách hàng của tôi giao tiếp tương đối không thường xuyên.

+0

Có lẽ bạn nên thêm điều này vào câu hỏi ban đầu của mình :) – Daan

+0

Tôi nghĩ đó là câu trả lời. – NateS

Các vấn đề liên quan