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.