Netflix engineers reported intermittent timeouts and hung instances in applications running on Java 21 with SpringBoot 3 and embedded Tomcat. The affected instances stopped serving traffic while the JVM remained running, with a persistent increase in the number of sockets in the closeWait
state.
jcmd Thread.dump_to_file
to obtain complete thread dumps with virtual thread information.closeWait
state.synchronized
block while blocking.AbstractQueuedSynchronizer
code to understand the lock state.#119516
) that was signaled to acquire the lock but could not proceed due to lack of available carrier threads.#119516
) could not run because there were no available carrier threads.While virtual threads in Java 21 promise improved performance, there are still some integration challenges with locking primitives. Netflix looks forward to Java 23 and beyond, which should address these issues, enabling further performance gains through virtual thread adoption.
Ask anything...