-
-
Notifications
You must be signed in to change notification settings - Fork 34.4k
Description
To preserve the health of our services and reliably serve all GitHub Actions Cache users, the following rate limit will take effect immediately:
200 cache entry uploads per minute per repository.
If you exceed this limit, you will receive a 429 response and an error message indicating that you have exceeded the rate limit.
You should not retry your request until after the time specified in the Retry-After header has passed. If your request continues to fail due to this rate limit, implement exponential backoff between retries, and throw an error after a specific number of retries.
This limit helps prevent abuse and denial-of-service attacks and ensures that the service remains available for all users.
Important
Introduce the needed changes to your library so that the rate limit errors are retried as per the recommended schedule.
Update your actions and libs
If you are using any of the following actions or depend on any of these libraries:
- https://github.com/mozilla-actions/sccache-action
- https://github.com/mozilla/sccache
- https://github.com/apache/opendal
- https://github.com/DeterminateSystems/magic-nix-cache
Introduce the needed changes to maintain a high cache hit/miss ratio, or follow-up with the authors of those libraries on the progress of these changes.
Thrashing
It has also come to our attention that a substantial number of repositories adopting this library (or action) are exhibiting consistent cache thrashing behavior.
Cache thrashing occurs when cache entries are frequently evicted and re-created in a continuous cycle, preventing effective cache utilization. This happens when your workflow generates more cache data than can be stored within your available cache storage quota.
By default, GitHub Actions provides 10 GB of cache storage per repository. When this limit is reached, GitHub automatically evicts the least recently used cache entries to make room for new ones. If your workflows consistently produce cache data that exceeds this limit, the cache is constantly being written and evicted—resulting in thrashing.
This leads to:
- Wasted compute time spent creating caches that are immediately evicted
- Increased network bandwidth consumption
- Little to no performance benefit from caching
To avoid thrashing, consider increasing your cache storage limit. For more information, see "Usage limits and eviction policy."