0

I'm running an application that makes hundreds of http calls per second and is parsing and storing the data in redis. The I/O operations are asynchronous but I'm still getting consistent load spikes. From other articles I've read the CPU is low (mostly waiting for I/O) but the load averages spike (calls waiting to be processed) not sure where the hangup would be since new threads are only spawned if the active thread count is below the size of the thread pool. Any advice would be appreciated, I've included a graph below of the behavior I'm seeing:

enter image description here

Rawr
  • 2,206
  • 3
  • 25
  • 53
  • Do you log garbage collection? Is there a correspondence between major garbage collection rounds and the spikes? – RealSkeptic Feb 28 '17 at 09:17
  • This could be anything, including external factors, other VM's on the same physical machine, background tasks that run every X minutes... – john16384 Feb 28 '17 at 10:04
  • Do I understand this graph correctly and the load is IO related ? Is this a Windows machine, swapping. Are you flushing to disk ? Is Redis backed by a file store ? – Bruno Grieder Feb 28 '17 at 11:24
  • @RealSkeptic I haven't found any correlation between garbage collection and these spikes. – Rawr Feb 28 '17 at 22:02
  • @john16384 It could be other VM's on the same physical machine or background tasks but then I'd expect to see these load spikes without my application running. If there aren't then I'd expect there's something in my app causing the issue. – Rawr Feb 28 '17 at 22:03
  • @BrunoGrieder Yes I believe it is I/O related because the only thing the tasks submitted to the threadpool are doing is I/O. It's a AWS AMI, I believe they use Red Hat Linux. I make redis calls to a remote server (the redis isn't on the same server as the application). The load spikes are on the application server, not the redis server. – Rawr Feb 28 '17 at 22:07

0 Answers0