Hello, We are tuning an aplication using Axis 1.2.1, Solaris 9 and Sun 1.4.2_08 JVM. The SOAP request uses SAAJ and a binary content of 300 kb is sended as attachment.
The binary content is flushed to disk in the class org.apache.axis.attachments.ManagedMemoryDataSource because the variable MAX_MEMORY_DISK_CACHED is only 16 KB. We have found a lock problem in the 'flushToDisk' method ManagedMemoryDataSource.java:386). Only one threat is capable of execute the method 'java.io.File.createTempFile' at a time. The other threats are waiting to obtain the lock to write the attachment to disk. This is a great problem for the performance of the application. The solution used to solve this problem was to increase the MAX_MEMORY_DISK_CACHED parameter. This way the attachment is not cached to disk. The parameter MAX_MEMORY_DISK_CACHED is a hard coded value. I found other mails in the list requesting to make MAX_MEMORY_DISK_CACHED a configurable property. We thought that this could be very useful for tuning applications. Cheers, Antonio GarcĂa
