Hello Johannes,
On your production instance, have you experimented with the maximum heap size (-Xmx) and initial heap size (-Xms) options? The delays you're seeing could be caused by garbage collection pauses, either because too much memory is allocated so GC takes a long time, or because too little is allocated so GC runs often to free up more.
It could be happening only in production because your options are different between the two machines, or simply because production is being actively used by many people, so memory gets used up and needs to be cleaned out more often.
Disclaimer: I'm not a Java developer, so my understanding is 100% textbook instead of real-life observation. I personally just try a bunch of different numbers until the application works the way I want it to. If I'm completely wrong about this, someone correct me!
-Tamara