Hmm, I could be wrong... Did you try this on an otherwise empty topic? Try this: 1. Produce 100GB of messages 2. Run consumer performance test with --messages 1 3. Go get some coffee 4. Observe performance tests results with a time taken to consume 100GB of messages but only recording a single message consumed
:-) Here is what I mean: scala> val l = List(1,2,3,4,5,6,7,8,9,10) scala> val iter = l.iterator scala> var count = 0 scala> for(i <- iter if count < 5) { scala> iter.next java.util.NoSuchElementException: next on empty iterator ... This is the exact equivalent of val l = List(1,2,3,4,5,6,7,8,9,10) val iter = l.iterator var count = 0 while(iter.hasNext) { if(iter.next < 5) count += 1 } -Jay On Sun, Feb 9, 2014 at 9:43 PM, Neha Narkhede <neha.narkh...@gmail.com>wrote: > I ran ConsumerPerformance with different number of messages config for a > topic that has 100s of messages in the log. It did not hang in any of these > tests - > > nnarkhed-mn1:kafka-git-idea nnarkhed$ ./bin/kafka-run-class.sh > kafka.perf.ConsumerPerformance --zookeeper localhost:2181 --topic test > *--messages > 10* --threads 1 > start.time, end.time, fetch.size, data.consumed.in.MB, MB.sec, > data.consumed.in.nMsg, nMsg.sec > 1 messages read > 2 messages read > 3 messages read > 4 messages read > 5 messages read > 6 messages read > 7 messages read > 8 messages read > 9 messages read > 10 messages read > *2014-02-09 21:39:47:385, 2014-02-09 21:39:52:641, 1048576, 0.0015, 0.0060, > 10, 39.0625* (test ends with this) > nnarkhed-mn1:kafka-git-idea nnarkhed$ ./bin/kafka-run-class.sh > kafka.perf.ConsumerPerformance --zookeeper localhost:2181 --topic test > *--messages > 2* --threads 1 > 1 messages read > 2 messages read > *2014-02-09 21:39:59:853, 2014-02-09 21:40:05:100, 1048576, 0.0003, 0.0011, > 2, 8.0972* (test ends with this) > > The way I read the --messages config is "read exactly --messages # of > messages, not less not more". If the topic has less than --messages > records, it will hang until it gets more data, else it exits properly. > Seems like expected behavior. > > Thanks, > Neha > > > > On Sat, Feb 8, 2014 at 2:11 PM, Jay Kreps <jay.kr...@gmail.com> wrote: > > > It loops on > > for (messageAndMetadata <- stream if messagesRead < > config.numMessages) { > > // count message > > } > > > > That means it loops over *all* messages in the stream (eventually > blocking > > when all messages are exhausted) but only counts the first N as > determined > > by the config. > > > > As a result this command seems to always hang forever. Seems like someone > > "improved" this without ever trying to run it :-( > > > > -Jay > > >