SAP Knowledge Base Article - Preview

3591940 - Tomcat Available Threads Percentage low blocking at ReentrantReadWriteLock

Symptom

Low Tomcat Available Threads Percentage in SAP Commerce Cloud environment, it might be related to one or two application pods. 

The issue is not related to throughput. 

In dynatrace we can see a lot of threads blocked at ReentrantReadWriteLock

Unsafe.park
Built-In JRE | jdk.internal.misc
LockSupport.park
Built-In JRE | java.util.concurrent.locks
AbstractQueuedSynchronizer.acquire
Built-In JRE | java.util.concurrent.locks
AbstractQueuedSynchronizer.acquireShared
Built-In JRE | java.util.concurrent.locks
ReentrantReadWriteLock$ReadLock.lock
Built-In JRE | java.util.concurrent.locks
SelectableConcurrentHashMap$Segment.get
Java | net.sf.ehcache.store.chm
SelectableConcurrentHashMap.get
Java | net.sf.ehcache.store.chm
MemoryStore.get
Java | net.sf.ehcache.store
Cache.get
Java | net.sf.ehcache
EHCacheRegion.getWithLoader
Java | de.hybris.platform.regioncache.region.impl
DefaultCacheController.getWithLoader
Java | de.hybris.platform.regioncache
RegionCacheAdapter.getOrAddUnit
Java | de.hybris.platform.cache.impl
Transaction$GlobalCacheAdapter.getOrAddUnit
Java | de.hybris.platform.tx
AbstractCacheUnit.get
Java | de.hybris.platform.cache
FlexibleSearchCacheUnit.myGet
Java | de.hybris.platform.jalo.flexiblesearch

In open search log the error looks like

{"origin":"catalina","timeMillis":1743087534106,"thread":"hybrisHTTP48","level":"SEVERE","loggerName":"org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/].[DispatcherServlet]","threadId":117882,"threadPriority":5,"message":"Servlet.service() for servlet [DispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.StackOverflowError] with root cause","contextMap":{"sourceClassName":"org.apache.catalina.core.StandardWrapperValve","sourceMethodName":"invoke"},"thrown":{"localizedMessage":"","message":"","name":"java.lang.StackOverflowError","extendedStackTrace":[{"class":"java.util.stream.ReferencePipeline$2$1","method":"begin","file":"ReferencePipeline.java","line":173},{"class":"java.util.stream.Sink$ChainedReference","method":"begin","file":"Sink.java","line":253},{"class":"java.util.stream.Sink$ChainedReference","method":"begin","file":"Sink.java","line":253},{"class":"java.util.stream.ReferencePipeline$2$1","method":"begin","file":"ReferencePipeline.java","line":173},{"class":"java.util.stream.AbstractPipeline","method":"copyInto","file":"AbstractPipeline.java","line":508},{"class":"java.util.stream.AbstractPipeline","method":"wrapAndCopyInto","file":"AbstractPipeline.java","line":499},{"class":"java.util.stream.ReduceOps$ReduceOp","method":"evaluateSequential","file":"ReduceOps.java","line":921},{"class":"java.util.stream.AbstractPipeline","method":"evaluate","file":"AbstractPipeline.java","line":234},{"class":"java.util.stream.ReferencePipeline","method":"reduce","file":"ReferencePipeline.java","line":662},{"class":"de.hybris.platform.jalo.flexiblesearch.internal.ReadOnlyConditionsHelper","method":"checkHints","file":"ReadOnlyConditionsHelper.java","line":247},{"class":"de.hybris.platform.jalo.flexiblesearch.internal.ReadOnlyConditionsHelper","method":"couldUseReadOnlyDataSource","file":"ReadOnlyConditionsHelper.java","line":222},{"class":"de.hybris.platform.jalo.flexiblesearch.internal.FlexibleSearchExecutor","method":"getDataSourceForQuery","file":"FlexibleSearchExecutor.java","line":89},{"class":"de.hybris.platform.jalo.flexiblesearch.FlexibleSearch","method":"createCacheKey","file":"FlexibleSearch.java","line":1874},{"class":"de.hybris.platform.jalo.flexiblesearch.FlexibleSearch","method":"executeSearchUsingFlexibleSearchDialect","file":"FlexibleSearch.java","line":1743},{"class":"de.hybris.platform.jalo.flexiblesearch.FlexibleSearch","method":"search","file":"FlexibleSearch.java","line":1473},{"class":"de.hybris.platform.jalo.flexiblesearch.FlexibleSearch","method":"search","file":"FlexibleSearch.java","line":1464},{"class":"de.hybris.platform.servicelayer.search.impl.DefaultFlexibleSearchService$3","method":"execute","file":"DefaultFlexibleSearchService.java","line":550},{"class":"de.hybris.platform.servicelayer.search.impl.DefaultFlexibleSearchService$3","method":"execute","file":"DefaultFlexibleSearchService.java","line":528},{"class":"de.hybris.platform.servicelayer.session.impl.DefaultSessionService","method":"executeInLocalView","file":"DefaultSessionService.java","line":82},{"class":"de.hybris.platform.servicelayer.search.impl.DefaultFlexibleSearchService","method":"getJaloResult","file":"DefaultFlexibleSearchService.java","line":527},{"class":"de.hybris.platform.servicelayer.search.impl.DefaultFlexibleSearchService","method":"search","file":"DefaultFlexibleSearchService.java","line":180},{"class":"de.hybris.platform.servicelayer.search.impl.DefaultFlexibleSearchService","method":"search","file":"DefaultFlexibleSearchService.java","line":324}


Read more...

Environment

SAP Commerce Cloud

Product

SAP Commerce Cloud 2211

Keywords

AbstractQueuedSynchronizer, ReentrantReadWriteLock, Tomcat Available Threads Percentage low alert, java.lang.StackOverflowError , KBA , CEC-SCC-CLA-ENV-EMG , Environment Management , Problem

About this page

This is a preview of a SAP Knowledge Base Article. Click more to access the full version on SAP for Me (Login required).

Search for additional results

Visit SAP Support Portal's SAP Notes and KBA Search.