티스토리 뷰
평화롭게 강의 듣던 와중, vscode extension을 다운받으려고 하는데 오잉? 다운이 안된다.
네트워크 속도가 1초에 2KB 수준으로 매우 느렸다.
나는 windows 환경에서 wsl2를 사용하고 있고 vscode 에서 wsl2를 터미널 기본 세팅으로 해놨다.
최근에 네트워크를 잘못 만지는 바람에 리눅스 서버가 다운되었던 경험이 있어서
당연히 리눅스 문제겠구나~ 싶었다. 그래서 vscode에서 remote-wsl을 이용하여 접속해보니 !?
이러한 오류의 향연이었다. 일단, remote-wsl을 안쓴지 좀 되어서 vs code 서버 버전이 안맞구나~ 싶었는데 그를 다운받는 과정에서 다운로드가 제대로 되고 있지 않은 것으로 이해하였다.
첫번째 노력, Temp 폴더에 tar.gz 파일 넣기
관련 오류를 찾다보니 "https://update.code.visualstudio.com/commit~" 해당 부분을 윈도우 환경읜 웹브라우저에 붙혀넣기하고 다운로드 한 이후 해당하는 tar.gz 파일을 Temp 폴더에 넣으면 해결된다는 것을 봤다. 그런데 웬걸? 다운로드 속도가 역시나 1초에 2KB 정도 나오다가 네트워크 오류로 파일을 다운받지 못하였다.
이때 알아차렸어야 했다. 윈도우 환경에서 다운로드 하는데도 속도가 느린 것을 전혀 의심하지 않았다.
지은 죄 (리눅스 서버 네트워크 건드리다가 터진거)가 있기에 당연히 내 잘못이라고 생각하고 네트워크 오류구나! 해결해보자! 하고 다음 해결방안으로 뛰어들었다.
두번째 노력, 네트워크 어댑터 설정
설정 - 네트워크 및 이더넷 - 이더넷 - 어댑터 옵션 변경
위의 경로로 들어가서 보니 vEthernet (WSL)은 충분히 잘.. 연결되어 있었다. 왜 이거부터 먼저 볼 생각을 안했을까?
하지만 그럼에도 나는 나를 믿지 못했다. 왜냐하면 파일 다운로드 시도했을 때 네트워크 오류라고 떴으니까.
세번째 노력, windows 기능 켜기/끄기, Hyper-V 가상관리자
wsl을 이용하기 위해 windows 기능 켜기/끄기에서 Hyper-V, Linux용 Windows 하위 시스템, 가상 머신 플랫폼에 체크 했던
기억이 있다. 이 과정에서 여러 세팅들이 이루어진다. wsl2는 윈도 기반 리눅스 인터페이스인 wsl1과는 다르게 순수 리눅스 커널을 vm에서 사용하기 때문에 가상화에 관련된 기능을 켰던 것이다. 그리고 네트워크를 호스트 os랑 포트 공유를 사용하도록 하여 처음에는 단순하게 내부 네트워크로 설정이 되어있다.
Hyper-V 관리자 - 가상 스위치 관리자 - WSL을 보면 내부 네트워크에 체크가 되어있다. 근데 wsl1과는 다르게 wsl2 부터는 브릿지 모드가 가능하기 때문에 VM에 실제 IP를 할당해버릴 수 있게 되었다. 그래서 내부 네트워크로 된 세팅을 외부 네트워크로 설정하고 시도해봤다. 오! 역시나 안된다. ^^
네번째 노력, wsl2의 DNS 문제 ?
WSL2 DNS 문제를 보면 가정의 유동 IP 때문에 변경된 IP가 자동으로 할당되어 DNS 서버에 가지 않고 엉뚱한 경로로
가서 vscode server 파일을 다운로드 하려고 하나? 싶어서 DNS도 만져봤다.
DNS 설정은 해당 블로그를 참조했다.
sudo rm /etc/resolv.conf
sudo bash -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'
sudo bash -c 'echo "[network]" > /etc/wsl.conf'
sudo bash -c 'echo "generateResolvConf = false" >> /etc/wsl.conf'
sudo chattr +i /etc/resolv.conf
기존의 DNS서버가 무작위로 부여되던 resolv.conf 파일을 지우고, 구글 무료 DNS 서버인 8.8.8.8을 이용했다.
파일 내용을 수정한 것이 아니라 지우고 새로 만든 이유는 기존의 파일이 심볼릭 링크되어 있어서이다. 다음으로
wsl.conf에 두 설정을 했다. 맨 밑은 resolv.conf에 immutable 속성을 줘서 자동으로 지우지 못하게 한 것이다.
결론은? 뭐... 여전히 안됐다. 그런데 이 설정 이후 다운 속도가 기존보다 훨씬 빠르길래 그냥 그대로 놔뒀다.
다섯번째 노력, (드디어) VS code의 자체적인 문제?
3시간동안 만졌는데도 안되어서 멍하니 있다가.. 불현듯 wsl2 네트워크 문제가 아닌건가? 싶어서 apt-get으로 아무거나 다운받아봤다. 어라? 어????????????????? ㅋㅋ 잘된다. 그래서 vscode remote-wsl을 해보니까? 아. 안된다. 쓸데없는 짓을 계속 하고있었다.
그래서 찾아봤더니, 최근 1.70 vscode 버전이 업데이트가 되었고 ( 나는 자동 업데이트 해놨다. 이제 자동 업데이트 무조건 푼다 진짜 ) 관련 오류를 경험하는 사람들이 최근에 몇몇 있다는걸 알았다. 또 커뮤니티를 보니 vscode extensions이 다운 안된다는 말이 있었다. 그제서야 vs code 문제구나 싶었다.
vscode 공식 홈페이지에서 보는데, 어? 위의 오류 사진을 다시 자세히 보면,
commit: da76f93349a~ 어쩌구 부분이 있다. 나는 이게 내 컴퓨터의 뭐 특수한 번호 이런건줄 알았는데 그냥 vscode 버전의 커밋 id였다. 1.70 업데이트의 커밋이 바로 da76f9였다. 그래서 당장 vscode 깃허브에 뛰어가봤다. 역시나, 최근 오류들로 인하여 1.70.1 버전이 릴리즈 된 것을 확인할 수 있었다.
오류 수정 내역을 보니, 사실 무슨 말인지 자세히는 모르겠지만 ( 실력이 부족해서 ) Remote development: Zombie file watcher processes not cleaned up on remote host 문제가 있는 것 같아서 remote-wsl 문제도 있는건가? 싶었다. 근데 이 오류는 1.70 버전으로 오면서 해결이 되었다고 하는데....
결론, 그냥 vscode 서버 터진거임
remote에 관련된 오류는 1.70 버전에 와서 이미 다 해결되었을 것이고 나와 관계 없는 오류를 해결하고 릴리즈한 1.70.1이
나오면서 서버가 느려지지 않았나싶다. 왜냐하면, vscode를 지우고 다시 깔아보려고 홈페이지에서 설치 파일 다운로드 하려고 하니까 그것도 속도가 엄~청 느리더라. 그냥 단순하게 vscode 서버에 문제가 생겨서 일시적으로 느려진 것인데 혼자 멍청하게 리눅스 네트워크 !? vscode의 remote 오류!? 하면서 난리 부르쓰였다. 서버 복구할 때까지 기다리면 자연스레 해결 될 문제이다.
오늘의 교훈
1. vscode 자동 업데이트 해놓지말자. 잘되던거 안되니까 정말 답답하더라
2. 제발 오류가 생기면 좀 잘 읽어보자. 잘 모르는 분야라고 온갖 검색만 하지말고 원인을 파악하려하자.
3. 비록... 서버가 터진거뿐이지만.. 뻘짓하면서 검색한거.. 재밌었다 :)
추가내용
holix CTO인 살쾡이tv님께서 해결방법을 제시해주셨다.
해당하는 문제는, microsoft가 visual code를 업데이트 하는 과정에서 CDN을
이용하는데, CDN의 한국 endpoint가 오늘따라 매우 느렸습니다. 그래서
미국 endpoint ip 주소로 변경하니 잘 되었습니다 !
라고 하셔서 원인은 완전히 이해했으나, 막상 내가 해보니 잘 되지 않았다.
먼저, wsl의 /etc/hosts에다가 해당하는 코드를 추가해봤다.
sudo vim /etc/hosts
# 아래의 코드를 추가, 두 ip 모두 미국 endpoint
40.64.128.224 update.code.visualstudio.com
152.199.4.33 az764295.vo.msecnd.net
hosts 파일의 내용이 자동으로 날라가는 것을 방지하기 위하여 wsl.conf에 아래의 코드도 추가한다.
[network]
generateHosts = false
그리고 ping을 계속 날려봤더니, 아래 az764295 (visual code 업데이트 할 때 사용되는 CDN)은 잘 되는데 update.code는 패킷 손실률 100%로 ping이 튀었고, 역시나 속도가 느려서 해결되지 않았다. 사실, 잠깐 다른거 하느라 살쾡이님한테 문제 해결되었다고 너무 감사하다고 말하고 다른거 하고 와서 해봤는데 문제가 해결되지 않아서.. 다시 질문하기 죄송스러워서 그대로 방치해둔 상태이다. :( 하지만 원인은 알았으니 그것으로 만족한다.
'Retrospect > 오늘의 일기' 카테고리의 다른 글
[오늘의 일기] 자기 객관화 (4) | 2024.05.14 |
---|
- wsl2 오류
- CPU execution time
- 가변객체
- Java 컴파일러 동작 원리
- flex 수직정렬
- Java Compile time
- Dynamic Loading
- flex align
- JVM 실행원리
- JIT Compiler
- string pool
- JVM
- flex vertical align
- JVM Runtime Data Areas
- JVM ClassLoader
- 프로그래머스 데브코스
- 프로그래머스
- Java 실행원리
- Hotspot Compiler
- 자바 동적로딩
- Runtime Constant Pool
- 백엔드 데브코스
- 클라우드 기반 백엔드 데브코스
- extension 다운 안됨
- JVM Memory Areas
- JVM Execute Engine
- 컴퓨터 성능 지표
- vscode 오류
- flex box
- 코딩부트캠프
- Total
- Today
- Yesterday