2010-06-22 30 views

Trả lời

4

Cài đặt maxIdleTime được chuyển tới trình xử lý Socket của hệ điều hành và trở thành giá trị thời gian chờ cho socket đó. Nếu đầu kia của kết nối giữ kết nối còn sống, kết nối sẽ không bao giờ bị đóng bởi hệ điều hành. Chủ đề của Jetty sẽ đợi miễn là hệ điều hành cho rằng kết nối vẫn còn 'sống'.

3

Thời gian maxIdle ban đầu được chuyển đến sotimeout socket. Tuy nhiên, bây giờ cầu tàu đó là không đồng bộ, nó không được sử dụng nghiêm ngặt như vậy bởi vì thời gian ngừng hoạt động chỉ áp dụng cho các hoạt động chặn.

Thay vì thời gian chờ được sử dụng trong hai trường hợp:

1) nếu kết nối là nhàn rỗi (không đáp ứng cực nhanh), sau đó nếu thời gian chờ hết hạn kết nối sẽ được đóng lại.

2) nếu một hoạt động IO đang được thử (thường là đọc hoặc ghi từ một servlet), thì thời gian chờ được áp dụng gần như được thực hiện với một socket chặn đọc và nó là một soTimeout - tức là nếu IO đọc/ghi không có tiến bộ cho khoảng thời gian chờ, hoạt động sẽ thất bại với một TimeoutException.

Lưu ý ở cầu cảng-9, maxIldeTime đã được đổi tên idleTimeout

+0

tôi không thể làm cho thiết lập này làm việc đối với trường hợp sử dụng của tôi http://stackoverflow.com/questions/36885803/jetty-interrupt-long-lasting-requests- timeout-previous && https://github.com/graphhopper/graphhopper/issues/636 hoặc tôi đã hiểu nhầm câu trả lời của bạn chưa? – Karussell

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