是否可以使用Netty限制服務器的全局或通道帶寬?使用Netty通過百分比節流服務器帶寬
我可以通過GlobalChannelTrafficShapingHandler設置明確的讀取或寫入速率限制,但我試圖將服務器的全局帶寬限制爲大約一半的可用帶寬。所以如果服務器可以以8MB/s的速度上傳,我想限制上傳大約4MB/s。我希望服務器根據可用的帶寬變化進行調整;所以如果服務器的上傳速率降低到5MB/s(可能是由於其他應用程序的網絡利用率),那麼我想將速率限制爲約2.5MB/s。
我一直在玩覆蓋AbstractTrafficShapingHandler.submitWrite()並添加一個基於自上次調用的持續時間的延遲,但邏輯看起來很脆弱和不可靠。
有關如何智能解決此問題的任何想法?
在這種情況下,QoS可能會更容易。如果你使用Linux,請嘗試http://superuser.com/questions/309063/how-can-i-prioritise-network-bandwidth-on-a-per-application-basis – kichik
@kichik這是一個Java應用程序在Win/Mac/Linux上運行。 – dejuknow
知道什麼是「可用帶寬」是非常困難的。像「鏈路速度」這樣的事情可能完全沒有用處,因爲在大多數系統中,瓶頸可能在更遠的地方。除此之外,查看應用程序使用的總帶寬不太準確,因爲它同時取決於主機上的其他應用程序,以及可能特定於TCP/IP連接結束時的任何客戶端的任何瓶頸。 – BeeOnRope