Dear All, I am currently developing an application that handles uploads of big files using HTTP PUT. The I/O part of the server application can be broken down to (not literally spoken, just to make the working clear):
public void doPut(HttpServletRequest request, HttpServletResponse response) { InputStream in = request.getInputStream(); OutputStream out = new FileOutputStream("some_file"); [Transfer data between streams using a 32K buffer] } The client is a Java client writing 32K blocks to the server using chunked streaming mode with 32K chunk size. On performance tests I noticed the CPU load of the server going up to 100% and remaining there during the complete upload. I did some further profiling and finally got one (in my eyes) very propable candidate: The read(byte[]) methods of the (Coyote)InputStream return only blocks of ~1000 to ~7500 bytes resulting in an excessive amount of calls to the aforementioned methods in the process. (Windows & Linux alike, same behavior when accessing localhost or on access over network, c++ libcurl client produces the same pattern). The delay between the calls also does not seem to matter since the blocks to not get larger even with a 1 second or larger delay between the calls to InputStream.read(byte[]). I also noticed a funny pattern in the number of bytes read, there seems to be a fixed maximum of ~7000 bytes (windows) and a similar but not equal number (~7700) on linux. I tested with Tomcat 6.0.13 accessing the Tomcat HTTP connector directly, the connector was configured with: [...] socket.appReadBufSize="32678" socket.appWriteBufferSize="32768" socket.rxBufSize="32678" (BTW, Tomcat 5.5 behavior is the same) So finally my question: Do you have any idea what could cause the described behavior and prevent the server from returning larger buffers? Any parameters I could check/tweek to overcome that problem? Thank you! Daniel --------------------------------------------------------------------- To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]