Nettyを使用してサーバーのグローバル帯域幅またはチャネル帯域幅を制限できますか?Nettyを使用したスロット単位のサーバー帯域幅
明示的な読み取りまたは書き込みレート制限をGlobalChannelTrafficShapingHandlerで設定できますが、サーバーのグローバル帯域幅を使用可能な帯域幅の約半分に制限しようとしています。サーバーが8MB/sでアップロードできる場合は、アップロードを約4MB/sに制限したいと考えています。そして、私はサーバーが利用可能な帯域幅の変更として調整することを望みます。サーバーのアップロード速度が5MB/sに低下した場合(おそらく、他のアプリケーションによるネットワーク利用のため)、速度をapprx 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を試してください。 Win/Mac/Linux上で動作します。 – dejuknow
「利用可能な帯域幅」が何であるか知ることは非常に難しいです。ほとんどのシステムでは、ボトルネックがラインのさらに下のどこかにある可能性が高いため、「リンク速度」のようなものはまったく役に立たない可能性があります。それに加えて、アプリケーションで使用される総帯域幅を調べることは、ホスト上の他のアプリケーションに同時に依存するため、またTCP/IP接続の最後にあるクライアントに固有のボトルネックがあるため、 。 – BeeOnRope