Case
In high concurrency scenarios, view thread stack information, with a large number of thread blocked.
From the line stacks, there was a blockage in the thread stack, locked in the Com.fasterxml.jackson.databind.ser.SerializerCache.untypedValueSerializer ( serializercache.java:74).
1"catalina-exec-1453" #1525 daemon prio=5 os_prio=0 tid=0x00007f1010098800 nid=0x2675 waiting forMonitor entry [0x00007f0fd74dc000]2 Java.lang.Thread.State:BLOCKED (on object monitor)3At Com.fasterxml.jackson.databind.ser.SerializerCache.untypedValueSerializer (serializercache.java:74)4-Waiting to lock <0x000000072ac28ed8>(a Com.fasterxml.jackson.databind.ser.SerializerCache)5At Com.fasterxml.jackson.databind.serializerprovider._findexplicituntypedserializer (SerializerProvider.java : 1087)6At Com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.hasSerializerFor (Defaultserializerprovider.java : 392)7At Com.fasterxml.jackson.databind.ObjectMapper.canSerialize (objectmapper.java:2412)8At Org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.canWrite ( abstractjackson2httpmessageconverter.java:165)9At Org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters (abstractmessageconvertermethodprocessor.java:157)TenAt Org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters (abstractmessageconvertermethodprocessor.java:101) OneAt Org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue ( requestresponsebodymethodprocessor.java:199) AAt Org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue ( handlermethodreturnvaluehandlercomposite.java:71) -At Org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle ( servletinvocablehandlermethod.java:128) -At Org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod ( requestmappinghandleradapter.java:781) theAt Org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal ( requestmappinghandleradapter.java:721) -At Org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle ( abstracthandlermethodadapter.java:83) -At Org.springframework.web.servlet.DispatcherServlet.doDispatch (dispatcherservlet.java:943) -At Org.springframework.web.servlet.DispatcherServlet.doService (dispatcherservlet.java:877) +At Org.springframework.web.servlet.FrameworkServlet.processRequest (frameworkservlet.java:966) -At Org.springframework.web.servlet.FrameworkServlet.doGet (frameworkservlet.java:857) +At Javax.servlet.http.HttpServlet.service (httpservlet.java:624) AAt Org.springframework.web.servlet.FrameworkServlet.service (frameworkservlet.java:842) atAt Javax.servlet.http.HttpServlet.service (httpservlet.java:731) -At Org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (applicationfilterchain.java:303) -At Org.apache.catalina.core.ApplicationFilterChain.doFilter (applicationfilterchain.java:208) -At Org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal (httpputformcontentfilter.java:87) -At Org.springframework.web.filter.OncePerRequestFilter.doFilter (onceperrequestfilter.java:107) -At Org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (applicationfilterchain.java:241) inAt Org.apache.catalina.core.ApplicationFilterChain.doFilter (applicationfilterchain.java:208) -At Org.apache.tomcat.websocket.server.WsFilter.doFilter (wsfilter.java:52) toAt Org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (applicationfilterchain.java:241) +At Org.apache.catalina.core.ApplicationFilterChain.doFilter (applicationfilterchain.java:208) -At Com.qianye.zhaimi.master.filter.ExceptionFilter.doFilter (exceptionfilter.java:53) theAt Org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate (delegatingfilterproxy.java:344) *At Org.springframework.web.filter.DelegatingFilterProxy.doFilter (delegatingfilterproxy.java:261) $At Org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (applicationfilterchain.java:241)Panax NotoginsengAt Org.apache.catalina.core.ApplicationFilterChain.doFilter (applicationfilterchain.java:208) -At Org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal (characterencodingfilter.java:88) theAt Org.springframework.web.filter.OncePerRequestFilter.doFilter (onceperrequestfilter.java:107) +At Org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (applicationfilterchain.java:241) AAt Org.apache.catalina.core.ApplicationFilterChain.doFilter (applicationfilterchain.java:208) theAt Org.apache.catalina.core.StandardWrapperValve.invoke (standardwrappervalve.java:220) +At Org.apache.catalina.core.StandardContextValve.invoke (standardcontextvalve.java:122) -At Org.apache.catalina.authenticator.AuthenticatorBase.invoke (authenticatorbase.java:505) $At Org.apache.catalina.core.StandardHostValve.invoke (standardhostvalve.java:170) $At Org.apache.catalina.valves.ErrorReportValve.invoke (errorreportvalve.java:103) -At Org.apache.catalina.valves.AccessLogValve.invoke (accesslogvalve.java:956) -At Org.apache.catalina.core.StandardEngineValve.invoke (standardenginevalve.java:116) theAt Org.apache.catalina.connector.CoyoteAdapter.service (coyoteadapter.java:423) -At Org.apache.coyote.http11.AbstractHttp11Processor.process (abstracthttp11processor.java:1079)WuyiAt Org.apache.coyote.abstractprotocol$abstractconnectionhandler.process (abstractprotocol.java:625) theAt Org.apache.tomcat.util.net.nioendpoint$socketprocessor.dorun (nioendpoint.java:1760) -At Org.apache.tomcat.util.net.nioendpoint$socketprocessor.run (nioendpoint.java:1719) Wu-Locked <0x0000000733f4d960>(a Org.apache.tomcat.util.net.NioChannel) -At Java.util.concurrent.ThreadPoolExecutor.runWorker (threadpoolexecutor.java:1142) AboutAt Java.util.concurrent.threadpoolexecutor$worker.run (threadpoolexecutor.java:617) $At Org.apache.tomcat.util.threads.taskthread$wrappingrunnable.run (taskthread.java:61) -At Java.lang.Thread.run (thread.java:745)
Analysis:
In-depth analysis of the source code, from the code to see the serialization method used in the Synchronized keyword, resulting in blocked.
1 /**2 * Method that checks if the shared (and hence, synchronized) lookup Map might has3 * Untyped serializer for given type.4 */5 PublicJsonserializer<object> Untypedvalueserializer (class<?>type)6 {7 synchronized( This) {8 return_sharedmap.get (NewTypekey (Type,false));9 }Ten}
Jackson high concurrency in case of blocking