DEV Community

Cover image for [Fixed] Why is Git on windows so slow with gitlab.com since a ~1 week?
Julian
Julian

Posted on • Edited on

[Fixed] Why is Git on windows so slow with gitlab.com since a ~1 week?

edit: currently everything is working again. looks like its a gitlab issue, https://gitlab.com/gitlab-com/support-forum/issues/3975#note_107286437


first i have to say, i think that gitlab is awesome. i switched to gitlab.com long before microsoft aquired github.
the private repos, the CI, the open communicaton of problems, all that are things i love at gitlab.com.

my current problem is that remote git operations are soooo slow. for an empty git pull i need up to one minute (~55sec).

i opened an issue at gitlab.com but no answer yet.

first i thought it was the update to 2.19.0-64bit (windows7x64) but the downgrade to to git 2.14-1-64bit doesn't made it better. also tried to remove tortoise-git. with reboot of course. still no luck.
also pushing is affected. local operations like git status or committing have no problems but pushing to my gitlab repo having lfs enabled with no changes takes 55sec.

for testing purposes, i created two repos:

it looks like the communication with plink is very slow with gitlab.

gitlab

push to empty repo

$ time git push gitlab
Enumerating objects: 54, done.
Counting objects: 100% (54/54), done.
Delta compression using up to 12 threads
Compressing objects: 100% (49/49), done.
Writing objects: 100% (54/54), 34.21 KiB | 2.01 MiB/s, done.
Total 54 (delta 2), reused 0 (delta 0)
To gitlab.com:c33s/git_speed_test.git
 * [new branch]      master -> master

real    0m28.684s
user    0m0.000s
sys     0m0.062s
Enter fullscreen mode Exit fullscreen mode

push to again (no changes)

$ time git push gitlab
Everything up-to-date

real    0m27.666s
user    0m0.000s
sys     0m0.062s
Enter fullscreen mode Exit fullscreen mode

tracert

$ tracert gitlab.com

Tracing route to gitlab.com [35.231.145.151]
over a maximum of 30 hops:
...
  5    30 ms    21 ms    11 ms  google.peering.cz [91.213.211.170]
  6    31 ms    25 ms    13 ms  108.170.245.34
  7    41 ms    20 ms    22 ms  209.85.142.253
  8    48 ms    22 ms    26 ms  209.85.245.30
  9    50 ms    31 ms    31 ms  209.85.251.177
 10   127 ms   107 ms   107 ms  216.239.54.146
 11   137 ms   118 ms   119 ms  216.239.40.20
 12   137 ms   119 ms   119 ms  209.85.241.235
 13     *        *        *     Request timed out.
 14     *        *        *     Request timed out.
 15     *        *        *     Request timed out.
 16     *        *        *     Request timed out.
 17     *        *        *     Request timed out.
 18     *        *        *     Request timed out.
 19     *        *        *     Request timed out.
 20     *        *        *     Request timed out.
 21     *        *        *     Request timed out.
 22   138 ms   125 ms   123 ms  151.145.231.35.bc.googleusercontent.com [35.231.145.151]
Enter fullscreen mode Exit fullscreen mode

pull with GIT_TRACE=1

$ GIT_TRACE=1 git pull gitlab master
18:37:38.905345 git.c:328               trace: built-in: git 'pull' 'gitlab' 'master'
18:37:38.907345 run-command.c:626       trace: run_command: 'fetch' '--update-head-ok' 'gitlab' 'master'
18:37:38.945348 git.c:328               trace: built-in: git 'fetch' '--update-head-ok' 'gitlab' 'master'
18:37:38.949348 run-command.c:626       trace: run_command: 'C:\Program Files\Putty\plink.exe' 'git@gitlab.com' 'git-upload-pack '\''c33s/git_speed_test.git'\'''
18:38:06.097901 run-command.c:626       trace: run_command: 'rev-list' '--objects' '--stdin' '--not' '--all' '--quiet'
18:38:06.145903 run-command.c:626       trace: run_command: 'rev-list' '--objects' '--stdin' '--not' '--all' '--quiet'
18:38:06.181905 git.c:328               trace: built-in: git 'rev-list' '--objects' '--stdin' '--not' '--all' '--quiet'
From gitlab.com:c33s/git_speed_test
 * branch            master     -> FETCH_HEAD
18:38:06.479922 run-command.c:1452      run_processes_parallel: preparing to run up to 1 tasks
18:38:06.479922 run-command.c:1484      run_processes_parallel: done
18:38:06.479922 run-command.c:626       trace: run_command: 'gc' '--auto'
18:38:06.515925 git.c:328               trace: built-in: git 'gc' '--auto'
18:38:06.526925 run-command.c:626       trace: run_command: 'merge' 'FETCH_HEAD'
18:38:06.563927 git.c:328               trace: built-in: git 'merge' 'FETCH_HEAD'
Already up-to-date.
Enter fullscreen mode Exit fullscreen mode

github

push to empty repo

$ time git push github
Enumerating objects: 54, done.
Counting objects: 100% (54/54), done.
Delta compression using up to 12 threads
Compressing objects: 100% (49/49), done.
Writing objects: 100% (54/54), 34.21 KiB | 2.14 MiB/s, done.
Total 54 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), done.
remote:
remote: Create a pull request for 'master' on GitHub by visiting:
remote:      https://github.com/c33s/git_speed_test/pull/new/master
remote:
To github.com:c33s/git_speed_test.git
 * [new branch]      master -> master

real    0m5.005s
user    0m0.000s
sys     0m0.077s
Enter fullscreen mode Exit fullscreen mode

push to again (no changes)

$ time git push github
Everything up-to-date

real    0m2.311s
user    0m0.015s
sys     0m0.062s
Enter fullscreen mode Exit fullscreen mode

tracert

$ tracert github.com

Tracing route to github.com [192.30.253.113]
over a maximum of 30 hops:
...
  5    21 ms    12 ms    11 ms  92.60.12.149
  6   299 ms   252 ms   311 ms  ae97-0-r02.inx.vie.nextlayer.net [92.60.1.64]
  7   117 ms    12 ms     7 ms  ae2-0-r12.inx.vie.nextlayer.net [92.60.1.156]
  8    27 ms     7 ms     7 ms  ae2-0-r60.inx.vie.nextlayer.net [92.60.1.233]
  9    23 ms     6 ms     7 ms  et-0-0-13.bar4.Vienna1.Level3.net [212.133.7.161]
 10     *        *        *     Request timed out.
 11   118 ms   103 ms   103 ms  GITHUB-INC.bear1.Washington111.Level3.net [4.15.136.22]
 12     *        *        *     Request timed out.
 13     *        *        *     Request timed out.
 14   127 ms   108 ms   107 ms  lb-192-30-253-113-iad.github.com [192.30.253.113]

Enter fullscreen mode Exit fullscreen mode

pull with GIT_TRACE=1

$ GIT_TRACE=1 git pull github master
18:37:23.686475 git.c:328               trace: built-in: git 'pull' 'github' 'master'
18:37:23.688475 run-command.c:626       trace: run_command: 'fetch' '--update-head-ok' 'github' 'master'
18:37:23.724477 git.c:328               trace: built-in: git 'fetch' '--update-head-ok' 'github' 'master'
18:37:23.728477 run-command.c:626       trace: run_command: 'C:\Program Files\Putty\plink.exe' 'git@github.com' 'git-upload-pack '\''c33s/git_speed_test.git'\'''
18:37:25.534581 run-command.c:626       trace: run_command: 'rev-list' '--objects' '--stdin' '--not' '--all' '--quiet'
18:37:25.605585 run-command.c:626       trace: run_command: 'rev-list' '--objects' '--stdin' '--not' '--all' '--quiet'
18:37:25.642587 git.c:328               trace: built-in: git 'rev-list' '--objects' '--stdin' '--not' '--all' '--quiet'
From github.com:c33s/git_speed_test
 * branch            master     -> FETCH_HEAD
18:37:25.867600 run-command.c:1452      run_processes_parallel: preparing to run up to 1 tasks
18:37:25.867600 run-command.c:1484      run_processes_parallel: done
18:37:25.867600 run-command.c:626       trace: run_command: 'gc' '--auto'
18:37:25.903602 git.c:328               trace: built-in: git 'gc' '--auto'
18:37:25.913602 run-command.c:626       trace: run_command: 'merge' 'FETCH_HEAD'
18:37:25.949604 git.c:328               trace: built-in: git 'merge' 'FETCH_HEAD'
Already up-to-date.
Enter fullscreen mode Exit fullscreen mode

my timing checks with time git pull showed my that most of the time its about 28sec. for an empty pull. some kind of timeout on gitlabs side?

any ideas?

links:

Top comments (3)

Collapse
 
pojntfx profile image
Felicitas Pojtinger

This appears to be an issue with the proprietary Windows operating system. Just tried timeing it on Fedora GNU/Linux, next to no difference to Github. Good luck to you!

Collapse
 
walialu profile image
Marco Kellershoff

Try to put GitLab into your Hosts file. Could be a DNS Issue and this is worth a shot :)

Collapse
 
c33s profile image
Julian

looks like it was a gitlab issue. i updated my post...