Github 속도 느릴 때 해결 방법



문제점

Github를 사용하다보면 비정상적으로 속도가 느린 경우가 있습니다.

$ git pull
warning: no common commits
remote: Enumerating objects: 5241, done.
remote: Counting objects: 100% (5241/5241), done.
remote: Compressing objects: 100% (2145/2145), done.
Rceiving objects:  35% (1880/5241), 140.32 MiB | 56.00 KiB/s

위와 같이 git pull 명령어를 입력했는데, 다운로드 속도가 약 56KB가 나왔습니다. 실제 사용하고 있는 인터넷의 속도는 1Gbps 정도로 굉장히 빠른데, 너무나도 느린 수치입니다.


해결 방법 발견

이 경우는 해외 서버 때문이 아닐까? 라는 정도로 생각하고 기존까지는 그냥 사용해왔었는데, 너무 느려서 다운로드를 받는데 지장이 생기고 작업에 착오가 생겨서 찾아보던 중에 해결법을 찾아내었습니다.

https://blog.humminglab.io/github-through-proxy/ 링크에서 이러한 문제를 해결하는 방법을 찾을 수 있었습니다.

미국과 같이 해외로 나가는 경우는 통신 사업자가 어떤 광케이블을 계약해서 사용하느냐에 따라 속도가 제각각이 된다. 인터넷 제공 업체를 마음대로 바꿀 수 없는 상황에서, GitHub로 작업은 해야 한다면 해결 방안 중 하나가 proxy를 사용하여 다른 망을 사용하여 나가도록 하는 것이다.

라는 멘트를 발견했습니다.

프록시 서버는 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해 주는 컴퓨터나 응용 프로그램을 가리킨다. 서버와 클라이언트 사이에서 중계기로서 대리로 통신을 수행하는 기능을 가리켜 ‘프록시’, 그 중계 기능을 하는 것을 프록시 서버라고 부른다 by 위키백과

프록시 서버를 변경하여 다른 네트워크에 접속할 수 있는 경로를 변경해줘서 속도를 올리는 방법이었습니다.


해결하기

https://www.socks-proxy.net/ 저는 이 링크에서 proxy 서버를 찾았습니다. 위에 언급한 블로그에서 사용한 링크들은 전부 잘 동작하지 않았습니다. 응답이 좋은 순서대로 하나씩 적용하면서 사용할 수 있는 proxy를 고르면 된다고 합니다.

Alt text

제가 입력한 링크에서 Korea로 검색하면 아래와 같이 나오게 됩니다.

$ git config --global http.https://github.com.proxy socks4://112.218.169.189:4145
$ git pull origin master
warning: no common commits
remote: Enumerating objects: 5241, done.
remote: Counting objects: 100% (5241/5241), done.
remote: Compressing objects: 100% (2145/2145), done.
remote: Total 5241 (delta 150), reused 5241 (delta 150), pack-reused 0
Receiving objects: 100% (5241/5241), 313.81 MiB | 846.00 KiB/s, done.
Resolving deltas: 100% (150/150), done.

위와 같은 명령어를 입력하여 pull을 진행하니 다운로드 속도가 대략 1MiB/s 가 나왔습니다. 10배 이상의 속도 진전이 있었습니다. (위에서는 313.81Mib 로 나오지만 다운 받을 때는 1MiB/s 정도 나왔습니다. 뒤의 속도는 평균 속도인 것으로 추측됩니다.)

이렇게 다운로드 하니 암이 치료되고 다운로드는 금방 끝났습니다. proxy 주소가 들어갈 때마다 바뀌는 것 같으니 항상 github의 config 를 위의 명령어로 바꿔주어야 하지만 속도는 빨라지니 .. 일단은 사용해야겠습니다. 더 좋은 방법이 있으면 댓글로 알려주세요~

이 해결법을 보면서 느낀 점은 아직도 지식이 많이 부족하구나 라는 것입니다. 문제를 해결하려면 전반적인 컴퓨터 지식이 훨씬 더 많이 필요한 것 같습니다. 단순히 git을 사용하는 것 뿐 아니라 네트워크 적인 지식과 서버와 관련된 지식까지 총체적으로 아직은 갈 길이 멀은 것 같습니다.