2017-08-02 3 views
0

J'ai configuré un cluster Kafka à six nœuds à deux nœuds avec un facteur de réplication de 2 sur AWS. Chaque noeud Kafka s'exécute sur une instance EC2 m4.2xlarge soutenue par un EBS.Kafka Limitation du débit du producteur et du courtier

Je comprends que le débit de données du producteur Kafka au courtier Kafka est limité par la bande passante réseau du producteur. Supposons que la bande passante réseau entre le producteur et le courtier Kafka soit de 1 Gbps (environ 125 Mo/s) et que la bande passante entre le courtier et le stockage Kafka (entre l'instance EC2 et le volume EBS) soit de 1 Gbit/s. J'ai utilisé l'outil org.apache.kafka.tools.ProducerPerformance pour profiler la performance.

j'ai observé qu'un seul producteur peut écrire à environ 90 Mo/s au courtier lorsqu'une taille du message est de 100 octets. (D'où le réseau ne soit pas saturé)

J'ai aussi observé que le taux d'écriture sur disque volume EBS est d'environ 120 Mo/s.

Est-ce 90 Mo/s en raison d'un goulot d'étranglement réseau ou est-ce une limitation de Kafka? (Oublier la taille des lots, etc de compression pour la simplicité)

Serait-ce en raison de la limitation de la bande passante entre les courtiers et le volume ebs?

J'ai aussi observé que lorsque deux producteurs (de deux machines séparées) produisent des données, le débit d'un producteur a chuté à environ 60 Mo/s.

Quelle pourrait en être la raison? Pourquoi cette valeur n'atteint-elle pas 90 Mo/s? Cela pourrait-il être dû au goulot d'étranglement du réseau entre le courtier et le volume ebs?

Ce qui me confond est que dans les deux cas (seul producteur et deux producteurs) Taux d'écriture sur le disque à ebs reste environ 120 Mo/s (plus proche de sa limite supérieure).

Merci

Répondre

0

je suis tombé sur la même question que pour ma compréhension, dans le premier cas, un producteur envoie des données à deux courtiers (il n'y a rien d'autre dans le réseau) si vous avez obtenu 90 Mo/s et chaque courtier à 45MB/s (environ), mais dans le second cas, deux producteurs envoient des données à deux courtiers afin du point de vue des producteurs, il est en mesure d'envoyer des données à 60 Mo/s, mais du point de vue du courtier, il reçoit des données à 60 Mo/s s. donc vous êtes en mesure de pousser plus de données à travers kafka.

0

Il y a deux choses à considérer:

  1. Il y a des limites de disque et réseau distincts qui appliquent à la fois l'instance et le volume.
  2. Vous devez tenir compte de la réplication. Si vous avez RF = 2, la quantité de trafic d'écriture prise par un seul nœud est 2 * (PRODUCER_TRAFFIC)/(PARTITION_COUNT) en supposant une répartition uniforme des écritures sur les partitions.