I finally found the answer, and this is related to the ProcessModel of ASP.NET
Allow me to show you how to maximize the potential of your server which Microsoft limited you by default. You don't need to pay more to upgrade to managed dedicated server or hire microsoft professional to configure your web server for high speed, because i am telling you the secret in this post.
OPTIMIZE YOUR SERVER SENDING FILE SPEED
- Optimize Worker Threads, Application Web.config
<system.web>
<processModel maxWorkerThreads="1000" maxIoThreads="1000" minWorkerThreads="10" minIoThreads="10"/>
</system.web>
- Set C:\Windows\Microsoft.NET\Framework and C:\Windows\Microsoft.NET\Framework64 file ASPNet.config
<configuration>
<system.web>
<applicationPool
maxConcurrentRequestsPerCPU="5000"
maxConcurrentThreadsPerCPU="0"
requestQueueLimit="5000" />
</system.web>
</configuration>
Configure in IIS, Max Worker Processes : 20 (in the application pool)
Configure Machine.config in C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config and C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config
search for ProcessModel, and change MachineOnly to MachineToApplication
<section name="processModel" type="System.Web.Configuration.ProcessModelSection, System.Web,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
allowDefinition="MachineOnly" allowLocation="false" />
to
<section name="processModel" type="System.Web.Configuration.ProcessModelSection, System.Web,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
allowDefinition="MachineToApplication" allowLocation="false" />
- You must restart the application pool to take effect
Once the IIS has full power, it will send file to for user downloading in high speed, which my user get the highest speed he can get with his ISP package. By default Microsoft limit the potential of your server because they assume your server is intel atom.
Thank you