Có thể giới hạn băng thông kênh hoặc toàn cầu của máy chủ bằng Netty không?Băng thông máy chủ ga bằng phần trăm sử dụng Netty
Tôi có thể đặt giới hạn tốc độ đọc hoặc ghi rõ ràng qua GlobalChannelTrafficShapingHandler, nhưng tôi đang cố gắng giới hạn băng thông toàn cầu của máy chủ khoảng một nửa băng thông có sẵn. Vì vậy, nếu máy chủ có thể tải lên với tốc độ 8MB/giây, tôi muốn giới hạn tải lên khoảng 4MB/s. Và tôi muốn máy chủ điều chỉnh các thay đổi băng thông sẵn có; vì vậy nếu tốc độ tải lên của máy chủ giảm xuống còn 5MB/s (có lẽ do việc sử dụng mạng bởi các ứng dụng khác), thì tôi muốn giới hạn tốc độ thành apprx 2,5MB/s.
Tôi đã chơi với ghi đè AbstractTrafficShapingHandler.submitWrite() và thêm thời gian trễ dựa trên thời lượng từ cuộc gọi trước đó, nhưng logic dường như mong manh và không đáng tin cậy.
Bất kỳ ý tưởng nào về cách tiếp cận thông minh vấn đề này một cách thông minh?
Có thể QoS sẽ dễ dàng hơn trong trường hợp này. Nếu bạn đang sử dụng Linux, hãy thử http://superuser.com/questions/309063/how-can-i-prioritise-network-bandwidth-on-a-per-application-basis – kichik
@kichik Đây là một ứng dụng Java chạy trên Win/Mac/Linux. – dejuknow
Rất khó để biết "băng thông có sẵn" là gì. Những thứ như "tốc độ liên kết" có khả năng hoàn toàn vô dụng vì trên hầu hết các hệ thống, nút cổ chai có thể là một nơi nào đó xa hơn xuống dòng. Ngoài ra, nhìn vào băng thông tổng hợp được ứng dụng sử dụng không có khả năng rất chính xác vì nó phụ thuộc đồng thời vào các ứng dụng khác trên máy chủ và bất kỳ nút cổ chai nào có thể cụ thể cho bất kỳ khách hàng nào đang ở cuối kết nối TCP/IP của bạn . – BeeOnRope