title: Producer throughput with varying acks=0,1,-1
body: <p>I have been doing some performance tests with kafka cluster for my project. I have a question regarding the send call and the 'acks' property of producer. I observed below numbers with below invocation of send call. This is a simple fire and forget call. </p>
  
  <pre><code>producer.send(record); // fire and forget call
  </code></pre>
  
  <p>The topic has 5 partitions and I see below results with different acks value and replication factor. The kafka cluster has 5 nodes running with default values and using local disk</p>
  
  <pre><code>acks             Replication factor=1              Replication factor=3
  0                  1330k msgs/sec                    1260k msgs/sec
  1                  1220k msgs/sec                    1200k msgs/sec
  -1(all)            1220k msgs/sec                    325k msgs/sec  
  </code></pre>
  
  <p>As you can see as the acks value changes from 0 to all, the producer throughput decreases. What I am not able to understand is that if the producer send call is fire and forget in nature (see above) and producer is not waiting for any acknowledgements then why does the producer throughput drops as we move to stronger acks guarantees?</p>
  
  <p>Any insights into how acks and producer send call works internally in Kakfa would be greatly appreciated.</p>
  
  <p>P.S. I had asked this on kafka users mailing list but didn't get a reply so asking this on SO.</p>