GigUpload Technology
ABCUpload .NET incorporates our proprietary GigUpload Technology. Our Progress Module picks up ongoing uploads and uses a number of high performance techniques to allow uploads of virtually unlimited size. Whether you want to upload KB or GB your choice has to be ABCUpload!
So why not use the standard ASP.NET classes?
The standard ASP.NET classes cache the entire upload in memory. Not only does this have performance implications but it also inherently limits the size of ongoing uploads. When ASP.NET memory use reaches 60% of available RAM the whole of ASP.NET is restarted.
The time that large uploads takes can create a vicious cycle in which ASP.NET uses excessive amounts of memory. Just assume you are getting ten new visitors every minute. Each visitor uploads one 20 MB file which takes 20 minutes to complete. This means that there are a total of 200 ongoing uploads - each using an average of 10 MB of RAM - a total of 2 GB. Even if your server has 2 GB of RAM ASP.NET will restart after only 1.2 GB has been used and that doesn't even allow for other use by ASP.NET.
Server Memory and Processor Use
The following graph shows memory (% Committed Bytes) and processor use (% Processor Time) for a large upload under ASP.NET. Memory use is in red and processor load is in green.
Note that as the upload progresses, more and more memory is used. When data transfer has stopped and the upload is being processed memory use jumps even higher. Because of the way that garbage collection works under .NET it may be some time before this memory is reclaimed even after the upload has finished.
GigUpload Technology
The following graph shows memory (% Committed Bytes) and processor use (% Processor Time) for a large upload under ASP.NET using GigUpload. Memory use is in red and processor load is in green.
Memory use is constant and negligible. Processor load is also slightly reduced and because the processing of the upload is a continuous multithreaded process again the load is more constant.
Background
Our tests were performed on Windows 2000 Server SP2 with .NET RTM installed. Our server was a Dual Processor PIII 550 MHz with 768 MB RAM.