<div dir="ltr">Hi all,<div><br></div><div>I am trying to optimize our processes, and I attached a profiler to the Java client reading from Rabbit.</div><div>I am seeing the profiler report 91% of the time spent reading the socket, which I find somewhat surprising (the consumer is doing quite some computation and then writing to HBase so I was expecting my own part to be the slowest).<br>
</div><div><br></div><div>Our messages are JSON encoded and I have a sample message [1] which is about 3kb when saved as a text file.</div><div><br></div><div>The profile thread timing is showing the following:</div><div>
<div>com.rabbitmq.client.impl.AMQConnection$MainLoop.run()  </div><div> - com.rabbitmq.client.impl.SocketFrameHandler.readFrame() </div><div>  - com.rabbitmq.client.impl.Frame.readFrom(DataInputStream) 167394</div><div>   -  java.io.DataInputStream.readUnsignedByte() 166968</div>
<div>    -   java.io.BufferedInputStream.read() 166968</div><div>     -    java.io.BufferedInputStream.fill() 166968</div><div>      -     java.net.SocketInputStream.read(byte[], int, int) 166968</div><div>       -      [Wall Time]  java.net.SocketInputStream.socketRead0(FileDescriptor, byte[], int, int, int)         91%</div>
</div><div><br></div><div>I&#39;m seeing only around 400 messages per second (lots of resources - 24 cores, 40GB memory, fast network) and using v3.0.4.  We&#39;re using easyrabbit libraries, but basically it boils down to a channel.basicConsume(...) with explicit acking.</div>
<div>  </div><div>Does this look suspicious to anyone?  Can anyone shed any light on how one might improve this?<br></div><div><br></div><div>Thanks for any insights,</div><div>Tim</div><div>- a rabbit newbie</div><div><br>
</div><div><br></div><div>[1] <a href="https://dl.dropboxusercontent.com/u/608155/transient/sampleRabbitMessage.json">https://dl.dropboxusercontent.com/u/608155/transient/sampleRabbitMessage.json</a><br></div></div>