|Summary:||TagHandlerPool is slow when high concurrently|
|Product:||Tomcat 7||Reporter:||Taiki Sugawara <buzz.taiki>|
|Component:||Jasper||Assignee:||Tomcat Developers Mailing List <dev>|
Reduce lock patch
Description Taiki Sugawara 2011-10-26 10:39:01 UTC
TagHandlerPool is slow when I ran stress test my web application using tomcat7. It occured in 7.0.19. Profiler said that it causes are followings: 1. Lock of log instance at org.apache.jasper.runtime.TagHandlerPool. 2. Lock of parameters field at org.apache.catalina.core.StandardWrapper.getInitParameter. An attached patch resolve this issue in my environment. It makes following changes: 1. Makes log field to static. 2. At StandardWrapper, changes lock policy from synchronized block to ReentrantReadWriteLock.
Comment 1 Taiki Sugawara 2011-10-26 10:41:29 UTC
Created attachment 27851 [details] Reduce lock patch
Comment 2 Mark Thomas 2011-10-28 14:43:14 UTC
The lock changes look good to me. The log change needed more careful checked. I have vague recollections of memory leaks with Jasper and logging and a number of components using non-static loggers to avoid them. Having checked the initialisation sequence, the logger is created by the container class loader, not a web app class loader so that change should be fine to. I'll commit these changes shortly.
Comment 3 Mark Thomas 2011-10-28 15:16:39 UTC
Many thanks for the patch. It has been applied to trunk and 7.0.x and will be in 7.0.23 onwards.
Comment 4 Konstantin Kolinko 2011-10-28 22:55:06 UTC
Created attachment 27862 [details] 2011-10-29_tc6_52091_StandardWrapper.patch TC6 patch for StandardWrapper - backport of r1190389
Comment 5 Taiki Sugawara 2011-10-31 04:02:14 UTC