2016-07-20 10 views
2

Ich verwende Diffusion 5.8.0 und habe die Werte input-buffer-size und output-buffer-size des Clientconnectors auf 1024k erhöht.PUSH-000086: Angeforderte Ausgabepuffergröße konnte nicht zugewiesen werden

Wenn ein Client eine Verbindung zum Server mit diesem Anschluss die folgenden Protokollmeldungen werden an die Serverkonsole:

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 

Senden und Nachrichten größer als die zugewiesene Puffergröße empfangen funktioniert so frage ich mich, ob dies etwas, um das ich mich kümmern muss ...

Gibt es Auswirkungen auf die Leistung? Wenn ja, wie kann ich eine größere Puffergröße zuweisen?

Antwort

2

Von der Buffer Sizing Seite der Diffusion-Dokumentation.

Wenn Sie eine input-buffer-size/output-buffer-size erhöhen, werden zwei Puffer konfiguriert; einer befindet sich im Client-Multiplexer und hat die konfigurierte Größe, der andere ist ein Socket-Puffer, der vom Betriebssystem verwaltet wird. Wie in Ihrem Fall ist es möglich, dass das Betriebssystem Ihnen keinen Socket-Puffer der angegebenen Größe zur Verfügung stellt und Ihnen möglicherweise ein kleinerer zugeordnet wird.

Dies hat Auswirkungen Leistung, wie unten im Diagramm veranschaulicht:

enter image description here

In die Nachricht über das Netzwerk gesendet werden, wobei die Socket-Puffer und der Puffer in dem Client-Multiplexer sind gleiche Größe. In diesem Fall kann die Nachricht direkt von der Leitung in den Socket-Puffer und direkt vom Socket-Puffer zum Client-Multiplexer gehen.

In Abbildung 2 die Nachricht über die Leitung und den Puffer im Client-Multiplexer gesendet werden, sind die gleiche Größe. Das Betriebssystem hat jedoch einen kleineren Socket-Puffer zugewiesen, der in mehreren Iterationen kopiert werden muss, bevor die vollständige Nachricht an den Client-Multiplexer übertragen wird. Jede Iteration wird einen Kontextwechsel verursachen, der sich auf die Leistung auswirkt.

Wie Sie einen größeren Socket-Puffer zuweisen, hängt von Ihrem Betriebssystem ab. Im Falle von Linux Sie den folgenden Befehl ausführen können Socket-Puffergrößen zu sehen: sysctl -a | grep mem

In meinem Fall das Ergebnis der Ausführung dieses Befehls enthält:

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

Dies sind die OS gebunden Eingangs- und Ausgangspuffer sind Größen und kann mit dem Befehl sysctl -w konfiguriert werden.

+0

Vielen Dank für die ausführliche Antwort –

Verwandte Themen