<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>