Hi AJ,
The whole content is buffered on the client in memory before sending if
you disable chunking. That works well for small documents but may fail
for large ones. You can run out of memory.
Chunking adds some overhead but not that much.
Have you tried wrapping the content stream that you provide to DotCMIS
into a BufferedStream (try big buffer sizes)? That may reduce the number
of chunks and increase the performance.
If your content is really big, you may want to consider creating an
empty document first and then upload the content afterwards with
SetContentStream. When the content is sent with CreateDocument() it must
be Base64 encoded. SetContentStream() can send the plain bytes. That can
make a big performance difference.
If you server also understands the CMIS Browser Binding, you can try
PortCMIS [1]. There is no official release yet, but the Browser Binding
implementation is working and faster than the AtomPub implementation of
DotCMIS.
- Florian
[1] https://chemistry.apache.org/dotnet/portcmis.html
We have noticed some significant performance problems storing large
content to our repository.
After wading through some of the dotCMIS code we tested setting the
HttpWebRequest's sendChunked = false (as counter intuitive as it may
seem).
Setting this to false increased content transfer upload speeds by
roughly 300% in all tests we have tried!
We are struggling with this scenario now. It seems entirely backwards
to disable chunked encoding, but we can't argue with the performance
numbers. We are testing against a Tomcat 7 based CMIS
provider/service (using the HTTP 1.1 NIO connector). Inserting
fiddler's proxy seems to automatically revert the upload to HTTP 1.0
standard - no chunking, so it's showing us the faster performance.
Wireshark we are trying to understand better.
Just wondering if anyone else has tested this or has any different
results on different CMIS providers?
Are there any known tweaks on the Tomcat side to better facilitate the
chunked transfer uploads?
What are the impacts of disabling chunking at the dotCMIS client side?
Thanks for any insight.
-AJ