axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Gerner <martin.ger...@postgrad.manchester.ac.uk>
Subject Re: Axis2 1.5.1 service handling is very slow
Date Wed, 13 Jan 2010 14:24:06 GMT
I've attached a full thread dump. I'd greatly appreciate any help in 
determining the cause, as I'm quite a novice when it comes to Axis2 and 
its internal workings. CPU usage for the java process goes up to 100% 
when it's blocking.

The top parts of a few dumps (taken at different times to get an idea 
about whether it's the same thing blocking):

"HttpConnection-8080-1" prio=10 tid=0x08c06c00 nid=0x1c77 runnable 
[0x2e9fe000]
   java.lang.Thread.State: RUNNABLE
        at java.util.zip.Inflater.inflateBytes(Native Method)
        at java.util.zip.Inflater.inflate(Inflater.java:223)
        - locked <0xa65b86e0> (a java.util.zip.Inflater)
        at 
java.util.zip.InflaterInputStream.read(InflaterInputStream.java:135)
        at java.util.zip.ZipInputStream.read(ZipInputStream.java:146)
        at java.util.zip.ZipInputStream.closeEntry(ZipInputStream.java:92)
        at java.util.zip.ZipInputStream.getNextEntry(ZipInputStream.java:70)
        at 
org.apache.axis2.deployment.DeploymentClassLoader.getBytes(DeploymentClassLoader.java:198)
        at 
org.apache.axis2.deployment.DeploymentClassLoader.getBytes(DeploymentClassLoader.java:178)
        at 
org.apache.axis2.deployment.DeploymentClassLoader.findClass(DeploymentClassLoader.java:81)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        - locked <0x34220a70> (a 
org.apache.axis2.deployment.DeploymentClassLoader)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
        at java.beans.Introspector.instantiate(Introspector.java:1453)
       [...]


----

"HttpConnection-8080-2" prio=10 tid=0x08a4fc00 nid=0x1cf6 runnable 
[0x2e9ad000]
   java.lang.Thread.State: RUNNABLE
        at java.util.zip.ZipInputStream.readFully(ZipInputStream.java:403)
        at java.util.zip.ZipInputStream.readEnd(ZipInputStream.java:361)
        at java.util.zip.ZipInputStream.read(ZipInputStream.java:148)
        at java.util.zip.ZipInputStream.closeEntry(ZipInputStream.java:92)
        at java.util.zip.ZipInputStream.getNextEntry(ZipInputStream.java:70)
        at 
org.apache.axis2.deployment.DeploymentClassLoader.getBytes(DeploymentClassLoader.java:198)
        at 
org.apache.axis2.deployment.DeploymentClassLoader.getBytes(DeploymentClassLoader.java:178)
        at 
org.apache.axis2.deployment.DeploymentClassLoader.findClass(DeploymentClassLoader.java:81)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        - locked <0x342afa70> (a 
org.apache.axis2.deployment.DeploymentClassLoader)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
        at java.beans.Introspector.instantiate(Introspector.java:1453)

----

Best wishes,
Martin Gerner

On 13/01/2010 12:30, Andreas Veithen wrote:
> The type of databinding cannot account for this delay. I would suggest
> to take a thread dump and try to understand where Axis2 is blocking.
>
> Andreas
>
> On Wed, Jan 13, 2010 at 13:04, Bruno Simioni <brunosimioni@gmail.com> wrote:
>   
>> Maybe using JAXB annotations on Java return objects, you can speed up the
>> process.
>>
>> Bruno.
>>
>> On Wed, Jan 13, 2010 at 9:51 AM, Martin Gerner
>> <martin.gerner@postgrad.manchester.ac.uk> wrote:
>>     
>>> Hi all,
>>>
>>> I'm running a simple web service which receives a string from the
>>> client, processes it and returns an array of custom objects (nothing
>>> complicated, they're just data holders containing a few ints, strings
>>> and booleans). While the actual serverside processing performed by my
>>> server code is performed very fast, the response times from the server
>>> are very large and seem to be linear in the number of returned objects.
>>>
>>> A short example: if I send a string to the server which results in 0
>>> objects being returned, the response from the server is received just a
>>> few milliseconds after the request is made. If the string is modified
>>> such that it returns one object, that increases to 8 seconds, and if it
>>> returns two objects it increases to 16 seconds. In all cases, I can see
>>> that the actual processing takes less than a second, so the web service
>>> java code that I've deployed is handling the requests quickly.
>>>
>>> All responses are small in size - the largest is ~900 bytes (so I can't
>>> imagine that it's an XML transformation issue). Using packet sniffers, I
>>> can see that the delay definitely is occurring on the server side (for
>>> the last example, I could see the POST packet going to the server, and
>>> then the response packet coming back 16 seconds later). Going by client
>>> and server log timings, I can see that the delay occurs after processing
>>> rather than before.
>>>
>>> I'm running axis2 1.5.1 with default settings, have tested it running on
>>> both the bundled SimpleAxisServer and Tomcat (both on a Debian server)
>>> and am using a very simple client based on code auto-generated by axis
>>> from the WSDL (running in Windows).
>>>
>>> Does anybody here have any clue as to what's causing the delays? It
>>> seems clear enough that it's something in the internal axis2 system, but
>>> as I'm quite new to axis2 I'm having difficulties locating the issue.
>>>
>>> Best wishes,
>>> Martin Gerner
>>>       
>>     


-- 
Martin Gerner
Faculty of Life Sciences
Michael Smith Building
University of Manchester
Manchester, M13 9PT


Mime
View raw message