0

I created a program that downloads an entire user's drive. To improve the performance, it's a .NET multi-threaded application and I increased the value of System.Net.ServicePointManager.DefaultConnectionLimit to increase the limit of simultaneous connections. I can confirm that if the application asks for 50 concurrent connections, they are correctly opened and used.

Currently, what I have experimented is that I can increase the number of the threads to improve the number of files processed per second. However, after a certain numbers of threads, there is no difference in terms of performance (throttling?).

I have profiled the bandwidth and it seems to have a limit around 1.5 Mo/s (maximum). The application can download as many files as the bandwidth allows and after a certain threshold, the threads that download lose in speed.

Does Google limit the number of concurrent connections or the amount of bandwidth? In the documentation, I only saw that they impose a limit of API calls per day.

Thanks for your help.

mtheriault
  • 1,065
  • 9
  • 21
  • I'm no server administrator, but I suspect most servers have some per-address limit on number of concurrent connections/bandwidth, if only to avoid a naive DoS. Of course, there's also the possibility that you have a bandwidth/connection bottleneck somewhere else along the route or something like that. – JAB Apr 07 '14 at 19:12
  • Thank you for your reply. Indeed, it's one of my assumptions. However, I have no idea about the speed I can expect for downloading binary files from the Google Drive API. – mtheriault Apr 07 '14 at 19:23

0 Answers0