Hi,

One of our users has a web application using Groovy with indy activated and describes the following problem:

At random intervals and a random times our web servers will go from serving 
responses in the 300 ms range to taking 30 seconds or more. Sometimes the 
servers will recover, sometimes they require a restart of the webserver (spring 
boot/tomcat). When the applications slow down we always see the tomcat thread 
pool hit the maximum size. Every single thread in the thread pool is in the 
RUNNABLE state but appears to be making no progress. Successive thread dumps 
show that the stacks are changing, but VERY slowly. The top of the stack is 
always this method:

at java.lang.invoke.MethodHandleNatives.setCallSiteTargetNormal(Native Method).

The other common condition is that whatever application code is on the stack is 
always dynamically compiled. Code that is @CompileStatic is NEVER on the stack 
when we see these slowdowns.

The thread dumps showed that the application code is never waiting on locks, 
socket reads, db connections, etc.

Mabye worth mentioning, that with @CompileStatic annotated code is not using invokedynamic....

Anyway... I am wondering if anyone has had something like this before. My first reaction to this description would be a bug in the JVM... or a performance bottleneck in the JVM.... but to spend literally seconds in native code is pretty bad in any case. On the other hand I am not having this web application here to experiment with. The only part I did hear is, that removing the indy version of Groovy seems to fix the problem. So it must be either our use of indy, or indy itself having a problem here. But asides from this conclusion I am quite at a loss.

Question 1: Did anyone have a similar problem before?
Question 2: Maybe more to the JVM engineers, is it even possible for the indy part to suddenly tak seconds on compilation - or especially the mentioned native method?

bye Jochen

--
You received this message because you are subscribed to the Google Groups "JVM 
Languages" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jvm-languages+unsubscr...@googlegroups.com.
To post to this group, send email to jvm-languages@googlegroups.com.
Visit this group at https://groups.google.com/group/jvm-languages.
For more options, visit https://groups.google.com/d/optout.

Reply via email to