You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by "Rich Scheuerle (JIRA)" <ji...@apache.org> on 2008/05/22 17:29:56 UTC

[jira] Resolved: (WSCOMMONS-349) Improved Large Attachment Performance

     [ https://issues.apache.org/jira/browse/WSCOMMONS-349?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Rich Scheuerle resolved WSCOMMONS-349.
--------------------------------------

    Resolution: Fixed

> Improved Large Attachment Performance
> -------------------------------------
>
>                 Key: WSCOMMONS-349
>                 URL: https://issues.apache.org/jira/browse/WSCOMMONS-349
>             Project: WS-Commons
>          Issue Type: Improvement
>          Components: AXIOM
>            Reporter: Rich Scheuerle
>            Assignee: Rich Scheuerle
>
> Tim Hefele (IBM) has been running tests on the performance of large attachments.
> Using this profile data, Tim and I have made several localized improvements to the 
> attachment processing. 
> Summary of Changes:
> 1) Larger Threshold Toleration
>    Currently a user can specify (via Axis config) a file threshold for attachments.
>    If an attachment is larger than the threshold, the attachment is stored in a backing 
>    file.  This improves the memory footprint but can degrade performance.
>    This code has been improved.  Now users can supply a much larger attachment threshold.
>    The axiom PartFactory will automatically reduce the threshold if it appears that the
>    Runtime is low on memory.  This allows users to choose a much higher
>    threshold and get better performance throughput.
> 2) PartFactory.createPart Synchronization
>    The createPart method is used to create an attachment part from the input stream.  In 
>    normal operation, this input stream is an HTTP InputStream and the message is (assumed) chunked.
>    If too many threads are allowed to operate in this section of the code, there tends to be
>    a lot of thrashing.  By reducing the number of operating threads, the total throughput of 
>    the system seems to increase.
> 3) Improved BAAInputStream and BAAOutputStream
>    The BAAInputStream is like a ByteArrayInputStream except that the content is an array of 
>    byte arrays.  Likewise for BAAOutputStream.
>    
>    The BAAInputStream now has a writeTo(OutputStream) method.  This allows the Axiom layer
>    to directly write out the stream without additional buffer copies.
>    In addition, the BAAOutputStream now has a receive(InputStream) method.  This allows the 
>    BAAOutputStream to be built directly from an InputStream without excessive buffer copies.
> 4) Upgraded the BufferUtils code to take advantage of (3)
> 5) Added a verification test
> Kudos to Tim Hefele, David Strite and Nikhil Thaker for their efforts on this issue.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.