Jackson high concurrency in case of blocking

Source: Internet
Author: User

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

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.