Comment écrire un client Netty performant
Je veux extrêmement efficace TCP client pour l'envoi de google protocole de la mémoire tampon des messages. J'ai été en utilisant le Netty bibliothèque de développer un serveur/client.
Dans les tests le serveur semble être en mesure de gérer jusqu'à 500 transactions par seconde, sans trop de problèmes, mais le client a tendance à pic autour de 180k de transactions par seconde.
J'ai fondé mon client sur les exemples fournis dans le Netty de la documentation, mais la différence est que je veux juste envoyer le message et d'oublier, je ne veux pas une réponse (qui la plupart des exemples). Est-il de toute façon à optimiser mon client, afin que je puisse atteindre un plus haut de TPS ?
Mon client de gérer plusieurs canaux, ou devrais-je être capable d'atteindre un débit plus élevé qu'avec un seul canal?
source d'informationauteur Dave
Vous devez vous connecter pour publier un commentaire.
1) Si le client ne s'intéresse qu'à l'envoi, pas de réception, vous pouvez toujours désactiver la lecture du canal comme ci-dessous
2) Vous pouvez augmenter le débit très facilement par le fait d'avoir plusieurs client par client, et aussi il peut l'échelle de trop.
3) et vous pouvez les faire à la suite des astuces pour améliorer les performances en général (pour la lecture/écriture)
De son mieux pour avoir une SEDA comme pipline par l'ajout d'un EXecutionHandler avec OrderdMemoryAwareThreadPoolExecutor, (min, max canal de mémoire avec une valeur optimale)
Réglage de la writeBufferHighWaterMark de la chaîne de valeur optimale (assurez-vous que la fixation d'une grande valeur ne risque pas de créer de la congestion)
bootstrap.setOption("writeBufferHighWaterMark", 10 * 64 * 1024);
Réglage de la SO_READ, SO_WRITE taille de la mémoire tampon
bootstrap.setOption("sendBufferSize", 1048576);
bootstrap.setOption("receiveBufferSize", 1048576);
Activation de TCP Aucun retard
bootstrap.setOption("tcpNoDelay", true);
Je ne suis pas sûr si "tcpNoDelay" permet d'améliorer le débit. Le retard est là pour améliorer les performances. Néanmoins, j'ai essayé et vu que le débit est en fait diminué de plus de 90%.