Repository Hosting

Repository Hosting: Unlimited Subversion, Git, Mercurial, and Trac Projects

Rh
VCS Hosting

Frequently Asked Questions

Why do I receive 503 errors, or why are my requests slow?

Many of our customers use continuous integration software or other software that automatically connects to their repositories on a regular basis to look for changes. These programs are very useful, and we support their use with Repository Hosting. However, sometimes a customer will inadvertently set a very short polling interval, and this will result in tens of thousands of requests to our servers. Out of fairness to our other customers, who experience slower performance as a result, we have had to implement the following QoS policy. Our goal is not to restrict our customers in any way besides discouraging short polling intervals on automated software.

The following limits only apply to Trac, repository, and shared drive requests. Access to the Account Dashboard is unrestricted.

For Subversion and Webdav HTTP(S) connections, all accounts will be limited to 15 requests-per-minute (rpm), but allowed to "burst" up to 30,000 requests. In other words, when your rpm is greater than 15, requests are slowly "borrowed" from your bucket of 30,000 requests. When your rpm is less than 15, the requests are returned to the bucket. If your bucket of requests ever gets empty, any further requests will be "slowed down" to 15 rpm. If you then continue to try to make requests faster than 15 rpm from multiple connections after your bucket is empty, you will eventually start seeing HTTP 503 errors being returned. The solution is just to stop making requests for a short time so that your bucket of requests has a little time to refill.

The above policy really only kicks in if you have automated tools polling our servers at a rate higher than 15 rpm indefinitely. We suggest that you keep those requests to 10 rpm or less. Also please note that Subversion often uses multiple requests to perform one action, so you should assume that each time your software polls the repository, it results in 10-20 requests. A simple rule of thumb would be to set your polling interval to every x minutes where x is the number of repositories you are polling.

Git and Mercurial connections over HTTP(S) are significantly more efficient and therefore result in far fewer, but more costly, requests. As a result, Mercurial will be limited to 7 rpm and allowed to burst up to 15,000 requests, and Git will be limited to 3 rpm and allowed to burst up to 4,000 requests.

For SSH connections to your repositories, each account is allowed 2000 requests in a 24-hour period. If this limit is exceeded, then further connections will be limited to 3 every 2 minutes until your 24-hour rate falls below 2000 again.

We have created an API endpoint that lets you check your request count for the last 24 hours, so that you can monitor your usage. You may access it by going to https://<your-account>.repositoryhosting.com/account/request_stats.json. The stats are updated hourly.

We will be monitoring the effects of this policy and tweaking it where needed. If you have any questions or concerns about this policy, please don't hesitate to contact us.