I think the main problem here is that we keep creating a new
TransformerFactory instance on each request which causes an expensive
provider search. We can probably cache the TransformerFactory instance
and reuse it on subsequent requests (or maybe even rewrite the code
not to use the TransformerFactory API). Can you please open a bug on
it?

Thanks,
Jarek

On Wed, Apr 29, 2009 at 8:55 PM, mdasari <mdas...@gmail.com> wrote:
>
> Hi,
>
> Geronimo: v 2.1.3
> OS: Windows XP, Windows Server 2003
>
> I've a web-service  that gets polled every N minutes, I noticed that when it
> is servicing a request the CPU usage is hitting close to 80%. I expect to
> have multiple clients to this web-service so it is going to be a problem.
>
> Based on what I deduced, the following stack trace is trying to load several
> of JAR files and not able to load/find them. This is resulting in lot of
> kernel level calls thus CPU utilization.
>
> ---------- STACK of the thread processing a WS request and trying to load
> JARs -------------
>
> "http-0.0.0.0-8080-1" daemon prio=6 tid=0x437c7c00 nid=0x1700 runnable
> [0x432ce000..0x432cfa14]
>   java.lang.Thread.State: RUNNABLE
>        at java.io.WinNTFileSystem.checkAccess(Native Method)
>        at java.io.File.canRead(File.java:691)
>        at
> org.apache.geronimo.kernel.classloader.UrlResourceFinder.getClassPath(UrlResourceFinder.java:151)
>        at
> org.apache.geronimo.kernel.classloader.UrlResourceFinder.findResource(UrlResourceFinder.java:95)
>        - locked <0x05420118> (a java.lang.Object)
>        at
> org.apache.geronimo.kernel.classloader.JarFileClassLoader$3.run(JarFileClassLoader.java:179)
>        at java.security.AccessController.doPrivileged(Native Method)
>        at
> org.apache.geronimo.kernel.classloader.JarFileClassLoader.findResource(JarFileClassLoader.java:177)
>        at
> org.apache.geronimo.kernel.config.MultiParentClassLoader.getResource(MultiParentClassLoader.java:580)
>        at
> org.apache.geronimo.kernel.config.MultiParentClassLoader.getResource(MultiParentClassLoader.java:565)
>        at
> org.apache.geronimo.kernel.config.MultiParentClassLoader.getResource(MultiParentClassLoader.java:565)
>        at
> org.apache.geronimo.kernel.config.MultiParentClassLoader.getResource(MultiParentClassLoader.java:565)
>        at
> org.apache.geronimo.kernel.config.MultiParentClassLoader.getResource(MultiParentClassLoader.java:565)
>        at java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:1168)
>        at
> org.apache.catalina.loader.WebappClassLoader.getResourceAsStream(WebappClassLoader.java:1170)
>        at javax.xml.transform.SecuritySupport$4.run(SecuritySupport.java:94)
>        at java.security.AccessController.doPrivileged(Native Method)
>        at
> javax.xml.transform.SecuritySupport.getResourceAsStream(SecuritySupport.java:87)
>        at
> javax.xml.transform.FactoryFinder.findJarServiceProvider(FactoryFinder.java:250)
>        at javax.xml.transform.FactoryFinder.find(FactoryFinder.java:223)
>        at
> javax.xml.transform.TransformerFactory.newInstance(TransformerFactory.java:102)
>        at
> org.apache.geronimo.axis2.WSDLQueryHandler.writeTo(WSDLQueryHandler.java:246)
>        at
> org.apache.geronimo.axis2.WSDLQueryHandler.writeTo(WSDLQueryHandler.java:240)
>        at
> org.apache.geronimo.axis2.WSDLQueryHandler.writeResponse(WSDLQueryHandler.java:164)
>        at
> org.apache.geronimo.axis2.Axis2WebServiceContainer.processGETRequest(Axis2WebServiceContainer.java:321)
>        at
> org.apache.geronimo.axis2.Axis2WebServiceContainer.doService2(Axis2WebServiceContainer.java:268)
>        at
> org.apache.geronimo.axis2.Axis2WebServiceContainer.doService(Axis2WebServiceContainer.java:205)
>        at
> org.apache.geronimo.axis2.Axis2WebServiceContainer.getWsdl(Axis2WebServiceContainer.java:161)
>        at
> org.apache.geronimo.tomcat.TomcatEJBWebServiceContext$EJBWebServiceValve.invoke(TomcatEJBWebServiceContext.java:159)
>        at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>        at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>        at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>        at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568)
>        at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
>        at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
>        at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
>        at 
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
>        at java.lang.Thread.run(Thread.java:619)
> ---------------------
>
>
>
> The following are files this java process is trying to read/load. (Output
> from Windows process monitor). It seems to be doing in a loop as I see
> continuous system calls to read these jar files repeatedly.
>
> --------------------
>
>
> 5:32:51.2222845 PM      java.exe        2880    QueryOpen
> E:\geronimo-tomcat6-javaee5-2.1.3\repository\com\sun\xml\bind\jaxb-impl\2.0.5\activation.jar
> NAME NOT FOUND
> 5:32:51.2225720 PM      java.exe        2880    QueryOpen
> E:\geronimo-tomcat6-javaee5-2.1.3\repository\com\sun\xml\bind\jaxb-impl\2.0.5\jsr173_1.0_api.jar
> NAME NOT FOUND
> 5:32:51.2229192 PM      java.exe        2880    QueryOpen
> E:\geronimo-tomcat6-javaee5-2.1.3\repository\com\sun\xml\bind\jaxb-impl\2.0.5\jaxb1-impl.jar
> NAME NOT FOUND
> 5:32:51.2232875 PM      java.exe        2880    QueryOpen
> E:\geronimo-tomcat6-javaee5-2.1.3\repository\com\sun\xml\messaging\saaj\saaj-impl\1.3\saaj-api.jar
> NAME NOT FOUND
> 5:32:51.2236048 PM      java.exe        2880    QueryOpen
> E:\geronimo-tomcat6-javaee5-2.1.3\repository\com\sun\xml\messaging\saaj\saaj-impl\1.3\activation.jar
> NAME NOT FOUND
> 5:32:51.2240117 PM      java.exe        2880    QueryOpen
> E:\geronimo-tomcat6-javaee5-2.1.3\repository\com\sun\xml\bind\jaxb-impl\2.0.5\jaxb-api.jar
> NAME NOT FOUND
> 5:32:51.2242844 PM      java.exe        2880    QueryOpen
> E:\geronimo-tomcat6-javaee5-2.1.3\repository\com\sun\xml\bind\jaxb-impl\2.0.5\activation.jar
> NAME NOT FOUND
> 5:32:51.2245549 PM      java.exe        2880    QueryOpen
> E:\geronimo-tomcat6-javaee5-2.1.3\repository\com\sun\xml\bind\jaxb-impl\2.0.5\jsr173_1.0_api.jar
> NAME NOT FOUND
> 5:32:51.2246938 PM      java.exe        2880    QueryOpen
> E:\geronimo-tomcat6-javaee5-2.1.3\repository\org\apache\derby\derbyclient\10.4.1.3\derbyLocale_zh_TW.jar
> NAME NOT FOUND
> 5:32:51.2250253 PM      java.exe        2880    QueryOpen
> E:\geronimo-tomcat6-javaee5-2.1.3\repository\org\apache\derby\derbynet\10.4.1.3\derby.jar
> NAME NOT FOUND
> 5:32:51.2252595 PM      java.exe        2880    QueryOpen
> E:\geronimo-tomcat6-javaee5-2.1.3\repository\org\apache\derby\derbytools\10.4.1.3\derbyLocale_cs.jar
> NAME NOT FOUND
> 5:32:51.2254948 PM      java.exe        2880    QueryOpen
> E:\geronimo-tomcat6-javaee5-2.1.3\repository\org\apache\derby\derbytools\10.4.1.3\derbyLocale_de_DE.jar
> NAME NOT FOUND
> 5:32:51.2257273 PM      java.exe        2880    QueryOpen
> E:\geronimo-tomcat6-javaee5-2.1.3\repository\org\apache\derby\derbytools\10.4.1.3\derbyLocale_es.jar
> NAME NOT FOUND
> 5:32:51.2259593 PM      java.exe        2880    QueryOpen
> E:\geronimo-tomcat6-javaee5-2.1.3\repository\org\apache\derby\derbytools\10.4.1.3\derbyLocale_fr.jar
> NAME NOT FOUND
> 5:32:51.2262344 PM      java.exe        2880    QueryOpen
> E:\geronimo-tomcat6-javaee5-2.1.3\repository\com\sun\xml\bind\jaxb-impl\2.0.5\jaxb1-impl.jar
> NAME NOT FOUND
> 5:32:51.2266488 PM      java.exe        2880    QueryOpen
> E:\geronimo-tomcat6-javaee5-2.1.3\repository\com\sun\xml\bind\jaxb-impl\2.0.5\jaxb-api.jar
> NAME NOT FOUND
> 5:32:51.2269216 PM      java.exe        2880    QueryOpen
> E:\geronimo-tomcat6-javaee5-2.1.3\repository\com\sun\xml\bind\jaxb-impl\2.0.5\activation.jar
> NAME NOT FOUND
> 5:32:51.2271920 PM      java.exe        2880    QueryOpen
> E:\geronimo-tomcat6-javaee5-2.1.3\repository\com\sun\xml\bind\jaxb-impl\2.0.5\jsr173_1.0_api.jar
> NAME NOT FOUND
> 5:32:51.2274621 PM      java.exe        2880    QueryOpen
> E:\geronimo-tomcat6-javaee5-2.1.3\repository\com\sun\xml\bind\jaxb-impl\2.0.5\jaxb1-impl.jar
> NAME NOT FOUND
> 5:32:51.2279473 PM      java.exe        2880    QueryOpen
> E:\geronimo-tomcat6-javaee5-2.1.3\repository\com\sun\xml\bind\jaxb-impl\2.0.5\jaxb-api.jar
> NAME NOT FOUND
> 5:32:51.2282277 PM      java.exe        2880    QueryOpen
> E:\geronimo-tomcat6-javaee5-2.1.3\repository\com\sun\xml\bind\jaxb-impl\2.0.5\activation.jar
> NAME NOT FOUND
> 5:32:51.2284987 PM      java.exe        2880    QueryOpen
> E:\geronimo-tomcat6-javaee5-2.1.3\repository\com\sun\xml\bind\jaxb-impl\2.0.5\jsr173_1.0_api.jar
> NAME NOT FOUND
> 5:32:51.2287691 PM      java.exe        2880    QueryOpen
> E:\geronimo-tomcat6-javaee5-2.1.3\repository\com\sun\xml\bind\jaxb-impl\2.0.5\jaxb1-impl.jar
> NAME NOT FOUND
> 5:32:51.2291697 PM      java.exe        2880    QueryOpen
> E:\geronimo-tomcat6-javaee5-2.1.3\repository\com\sun\xml\bind\jaxb-impl\2.0.5\jaxb-api.jar
> NAME NOT FOUND
>
> .......
> --------------
>
>
> My questions are:
> 1. I don't see those JARs in the location it is looking for, is there a way
> to disable this lookup? Do I've to place those jar files in those locations?
> 2. Where does class-loader get this list of JARs? Can I tweak anything
> there?
> 3. Did I configure something incorrectly?
>
> Geronimo/Webservice functionally still works, but I'd expect severe problems
> when I use this service with multiple ws clients.
>
> Can anyone shed some light on this?
>
> best regards
> - mdasari
> --
> View this message in context: 
> http://www.nabble.com/Webservice-handling-consuming-considerable-CPU-%28Windows%29-tp23303330s134p23303330.html
> Sent from the Apache Geronimo - Users mailing list archive at Nabble.com.
>
>

Reply via email to