2

私は Diffusion 5.8.0 を使用してinput-buffer-sizeおりoutput-buffer-size、Client Connector を 1024k に増やしました。

クライアントがこのコネクタを使用してサーバーに接続すると、次のログ メッセージがサーバー コンソールに出力されます。

2016-07-12 10:42:51.997|INFO|Diffusion: InboundThreadPool Thread_0|PUSH-000086|Client Connector: Requested output buffer size could not be allocated, requested: 1M allocated: 208K.|com.pushtechnology.diffusion.comms.connector.ConnectorImpl
2016-07-12 10:42:51.997|INFO|Diffusion: InboundThreadPool Thread_0|PUSH-000085|Connector Client Connector: Requested input buffer size could not be allocated, requested: '1M' allocated: '208K'.|com.pushtechnology.diffusion.comms.connector.ConnectorImpl

割り当てられたバッファサイズを超えるメッセージの送受信は機能するので、これは心配する必要があるかどうか疑問に思っています...

パフォーマンスへの影響はありますか? もしそうなら、どうすればより大きなバッファサイズをうまく割り当てることができますか?

4

1 に答える 1

3

Diffusion ドキュメントのBuffer Sizingページから。

input-buffer-size/を増やすと、output-buffer-size2 つのバッファーが構成されます。1 つはクライアント マルチプレクサにあり、構成されたサイズになります。もう 1 つは、オペレーティング システムによって管理されるソケット バッファです。あなたのケースで起こったように、オペレーティングシステムは指定されたサイズのソケットバッファーを提供しない場合があり、より小さいサイズが割り当てられる場合があります。

以下の図に示すように、これにはパフォーマンスへの影響があります。

ここに画像の説明を入力

図 1では、ネットワーク経由で送信されるメッセージ、ソケット バッファー、およびクライアント マルチプレクサーのバッファーは同じサイズです。この場合、メッセージはワイヤからソケット バッファに直接送信され、ソケット バッファからクライアント マルチプレクサに直接送信されます。

図 2では、回線を介して送信されるメッセージとクライアント マルチプレクサのバッファは同じサイズです。ただし、OS はより小さいソケット バッファを割り当てており、完全なメッセージがクライアント マルチプレクサに転送される前に、複数の反復でコピーする必要があります。各反復は、パフォーマンスに影響を与えるコンテキスト スイッチを引き起こします。

より大きなソケット バッファを割り当てる方法は、オペレーティング システムによって異なります。Linux の場合、次のコマンドを実行してソケット バッファ サイズを確認できます。sysctl -a | grep mem

私の場合、このコマンドを実行した結果には次のものが含まれます。

net.core.rmem_default = 212992
net.core.rmem_max = 212992
net.core.wmem_default = 212992
net.core.wmem_max = 212992

これらは OS バウンドの入力および出力バッファ サイズであり、sysctl -wコマンドを使用して設定できます。

于 2016-07-20T09:46:02.460 に答える