I'm seeing really odd application performance and hoping for good ideas.<div><br></div><div>My application starts lots of threads that each subscribe to a queue. &nbsp;When they receive a message, they persist to an NFS store, then publish a new message back to rabbit. &nbsp;As the application runs, new "pathways" of data are created -- additional sources of data, additional queues, additional threads to persist the data. &nbsp;Each thread reports the time taken to process each message (averaged over 100 messages).</div><div><br></div><div>I expected a distribution of time to handle each message, with the average gradually increasing with increasing load. &nbsp;When I look at a graph of all these data points (average time to process message versus clock time) it looks a lot as I would expect. &nbsp;You can see an example <a href="https://confluence.oceanobservatories.org/display/CIDev/Scale+Test+Results+Mar21">here</a> (second graph on page), but this has been reproduced each time I start to put load on the system.</div><div><br></div><div>But then when I single out individual threads, they follow very distinct paths on this graph. &nbsp;For example, if I compare two threads A and B, I see that one thread may always take 0.5sec longer to process messages. &nbsp;The performance of both threads rise and fall in parallel lines, but&nbsp;one thread is consistently slower than another! &nbsp;It seems that the earlier the thread is started within the VM, the faster it can publish. &nbsp;But as the cloud-based system grows and starts new VMs running the same application, new threads on the new VM perform as fast as the first threads on an earlier VM (so the performance drops off as the VM has been running longer -- not as the system or broker load grows).</div><div><br></div><div>The broker VM shows very low utilization (&lt;10% CPU used on 4-core system, only 25% of 2GB RAM used). &nbsp;The application VM grows until it reaches about 65% CPU, memory shows 35% of 4GB used. &nbsp;Message rates are relatively low -- growing from 0 to ~150msgs/sec with avg size ~500bytes.</div><div><br></div><div>I wish I could give you a nice easy code snippet to reproduce, but it will take some effort to extract a faithful reproduction from our complex publisher/subscriber/data process OO wrappings. &nbsp;I'm hoping from the description, someone can point me at some possible explanations.</div><div><br></div><div>Many thanks for any suggestions or ideas!</div><div>Jonathan</div><div><br></div>