π·οΈ Discussion Type
Question
π¬ Feature/Topic Area
Actions Checkout
Discussion Details
We operate a fleet of self-hosted GitHub Actions runners in an EU region. Starting around 2026-05-19, multiple workflows have begun experiencing severely degraded actions/checkout performance.
Is anyone else experiencing similar issues? We havenβt been able to find any active incidents
Symptoms
git fetch against GitHub from EU runners exhibits one of three failure modes, all of which look like the same underlying throughput collapse:
- Silent stall β no output for 15β25 min, killed by timeout-minutes.
- HTTP/2 stream cancelled β RPC failed; curl 92 HTTP/2 stream X was not closed cleanly: CANCEL, fatal: early EOF.
- Extremely slow transfer β Receiving objects crawls along at 10β25 KiB/s.
Handshake (DNS, TCP, TLS) is consistently healthy; the problem is mid-transfer.
Ok, so we identified degraded behavior on a network transport path that could increase transfer latency for some requests while leaving others unaffected, which is why reproduction was inconsistent. On May 29, traffic was moved away from the affected path and that 'should' mean this is mitigated. We are also digging into our alerting as to why we didn't autoflag this earlier.
Can folks let me know if you are still seeing issues here.
π¬ Your Product Feedback Has Been Submitted π
Thank you for taking the time to share your insights with us! Your feedback is invaluable as we build a better GitHub experience for all our users.
Here's what you can expect moving forward β©
- Your input will be carefully reviewed and cataloged by members of our product teams.
- Due to the high volume of submissions, we may not always be able to provide individual responses.
- Rest assured, your feedback will help chart our course for product improvements.
- Other users may engage with your post, sharing their own perspectives or experiences.
- GitHub staff may reach out for further clarification or insight.
- We may 'Answer' your discussion if there is a current solution, workaround, or roadmap/changelog post related to the feedback.
Where to look to see what's shipping π
- Read the Changelog for real-time updates on the latest GitHub features, enhancements, and calls for feedback.
- Explore our Product Roadmap, which details upcoming major releases and initiatives.
What you can do in the meantime π»
- Upvote and comment on other user feedback Discussions that resonate with you.
- Add more information at any point! Useful details include: use cases, relevant labels, desired outcomes, and any accompanying screenshots.
As a member of the GitHub community, your participation is essential. While we can't promise that every suggestion will be implemented, we want to emphasize that your feedback is instrumental in guiding our decisions and priorities.
Thank you once again for your contribution to making GitHub even better! We're grateful for your ongoing support and collaboration in shaping the future of our platform. β
0 replies
We're seeing the same behavior with runners in eu-west-3.
Our only mitigation is adding timeout-minutes: 1 to all checkouts, which makes them fail fast.
0 replies
We observed the same issue when running Git operations from AWS EC2 instances in the EU region.
Git over SSH is significantly slower during git fetch / checkout operations
HTTPS (likely backed by CDN endpoints) performs noticeably better
Multiple tests confirm consistent results across different runs
Using HTTPS instead of SSH improves repository fetch performance
0 replies
0 replies
This comment was marked as low quality.
This comment was marked as low quality.
@JulyanXu forcing HTTP 1.1 does not fix the issue on my projects.
0 replies
I want to mention I get the same issues even with a US-based fleet of runners (us-east-2).
0 replies
We are experiencing this as well and it has blocked the development process many times in the last few days.
/usr/bin/git -c protocol.version=2 fetch --prune --no-recurse-submodules origin +refs/heads/*:refs/remotes/origin/* +refs/tags/*:refs/tags/*
Error: error: RPC failed; curl 92 HTTP/2 stream 5 was not closed cleanly: CANCEL (err 8)
Error: error: 321 bytes of body are still expected
fetch-pack: unexpected disconnect while reading sideband packet
Error: fatal: early EOF
Error: fatal: fetch-pack: invalid index-pack output
The process '/usr/bin/git' failed with exit code 128
Waiting 10 seconds before trying again
0 replies
Another +1 to this, we're experiencing many extremely slow git checkout action runs (from EU).
0 replies
Also nothing of the changes suggested by JulyanXu helped.
0 replies
Same here, both in CI and and on my local machine.
0 replies
Still experiencing severe slow downs for object crawls,
with a throughput of around 15-30 KiB/s. Our runners are hosted in Europe at Hetzner (Germany DC).
0 replies
We got feedback from Github support that there was an issue on their side and that it should be fixed now.
0 replies
This comment was marked as spam.
This comment was marked as spam.
It runs the HTTP/2-vs-HTTP/1.1 comparison with full tracing so the output is exactly what GitHub Support needs.
Standalone shell (run directly on an affected EU runner):
#!/usr/bin/env bash set -x REPO="https://github.com/<owner>/<repo>.git" # <-- set this echo "===== ENV =====" date -u; git --version; curl --version | head -1 echo "===== TEST 1: default (HTTP/2) =====" rm -rf /tmp/h2 && GIT_TRACE=1 GIT_CURL_VERBOSE=1 GIT_TRACE_PACKET=1 \ timeout 300 git -c http.version=HTTP/2 clone --filter=blob:none --no-checkout \ "$REPO" /tmp/h2 2>&1 | tail -n 80 echo "TEST 1 exit: $?" echo "===== TEST 2: forced HTTP/1.1 =====" rm -rf /tmp/h11 && GIT_TRACE=1 GIT_CURL_VERBOSE=1 GIT_TRACE_PACKET=1 \ timeout 300 git -c http.version=HTTP/1.1 clone --filter=blob:none --no-checkout \ "$REPO" /tmp/h11 2>&1 | tail -n 80 echo "TEST 2 exit: $?"
If Test 1 stalls/CANCELs but Test 2 succeeds, that's your confirmation it's the HTTP/2 edge path.
As an Actions workflow step (same test, in CI):
- name: git transport diagnostics run: | set -x REPO="https://github.com/${{ github.repository }}.git" echo "::group::HTTP/2" GIT_TRACE=1 GIT_CURL_VERBOSE=1 timeout 300 \ git -c http.version=HTTP/2 clone --filter=blob:none --no-checkout "$REPO" /tmp/h2 || echo "H2 exit=$?" echo "::endgroup::" echo "::group::HTTP/1.1" GIT_TRACE=1 GIT_CURL_VERBOSE=1 timeout 300 \ git -c http.version=HTTP/1.1 clone --filter=blob:none --no-checkout "$REPO" /tmp/h11 || echo "H11 exit=$?" echo "::endgroup::"
When filing with Support, attach the full output of both groups plus date -u at the start of each, so they can line the timestamps up against their edge metrics.
0 replies
Ok, so we identified degraded behavior on a network transport path that could increase transfer latency for some requests while leaving others unaffected, which is why reproduction was inconsistent. On May 29, traffic was moved away from the affected path and that 'should' mean this is mitigated. We are also digging into our alerting as to why we didn't autoflag this earlier.
Can folks let me know if you are still seeing issues here.
3 replies
Hey, this is occuring again i think.
2h22 to clone a repo of 1 or 2gb. and it is very frequent.
For context this was not occuring with ghe and data residency in europe. What are the solutions ?
Any rapid answers or hints are very welcomed.
edit: i forgot to mention our runners are ec2 instances in europe.
edit 2: I'm using action/checkout. on ~30 builds, about 7 timeouted after 3h of pulling. It seem the build has a 40% chances taking a route that is very slow. When it falls on a good path the checkout only takes 1m30sec .
@nebuk89 authenticated checkouts were failing at our 3-hour job timeout with transfer speeds between 15 and 1 KB/s.
45% of our builds failed at checkout. The incident span were something like a 13-18 hours overlapped on two different days. (France)
If that doesn't count against the SLO, the SLO isn't measuring what customers actually experience, and the status page didn't reflect reality. Worse, there was no communication at all, so we β like many other customers, presumably β wasted hours troubleshooting a problem that was on GitHub's side.
Incidents are multiplying and clients are looking for alternatives, example (btw probably commented because of the checkout issue):
runs-on/runs-on#483 (comment)
Please consider reflecting this incident in the status history, or at least communicate to all clients when there's ongoing issues.
@nebuk89 not sure if this is related to this but i'm experiencing issues with the actions/checkout GH Actions Job:
Error: fatal: missing blob object '2c050de201eca7738deea0f7ae1e5f7bd670ce97'
Error: error: remote did not send all necessary objects
The process '/usr/bin/git' failed with exit code 1
Waiting 16 seconds before trying again
Run actions/checkout@v6
Syncing repository: cloudeteer/squad-test
Getting Git version info
Temporarily overriding HOME='/tmp/3/_temp/e18799d5-1eaa-48f4-95cb-401aec72fb8c' before making global git config changes
Adding repository directory to the temporary git global config as a safe directory
/usr/bin/git config --global --add safe.directory /tmp/3/squad-test/squad-test
/usr/bin/git config --local --get remote.origin.url
https://github.com/cloudeteer/squad-test
Removing previously created refs, to avoid conflicts
/usr/bin/git submodule status
Cleaning the repository
Disabling automatic garbage collection
Setting up auth
Fetching the repository
/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --depth=1 origin +218679353f5c448c47905eb7dc3282fa03468a46:refs/remotes/pull/683/merge
/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --depth=1 origin +218679353f5c448c47905eb7dc3282fa03468a46:refs/remotes/pull/683/merge
Error: fatal: missing blob object '2c050de201eca7738deea0f7ae1e5f7bd670ce97'
Error: error: remote did not send all necessary objects
The process '/usr/bin/git' failed with exit code 1
Waiting 12 seconds before trying again
/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --depth=1 origin +218679353f5c448c47905eb7dc3282fa03468a46:refs/remotes/pull/683/merge
Error: fatal: missing blob object '2c050de201eca7738deea0f7ae1e5f7bd670ce97'
Error: error: remote did not send all necessary objects
Error: The process '/usr/bin/git' failed with exit code 1
0 replies