회사 서버(Rocky Linux 8.9)에 VS Code Remote-SSH로 접속하면,
접속 순간 node 프로세스가 CPU 100% 이상을 먹으며 서버가 버벅거림.
top과 pstree로 확인해보니 VS Code 서버(node) 밑에
--type=extensionHost
--type=fileWatcher
--type=ptyHost
같은 자식 프로세스가 실행되면서 폭주.
특히 fileWatcher와 extensionHost가 워크스페이스 전체를 스캔하면서 터짐.
👉 흔히 겪는 증상: "VS Code 원격 붙을 때 서버가 뻗는다"
워크스페이스 범위: /data 같은 대형 디렉터리를 루트로 열어버리면 로그, 백업, 빌드 산출물까지 전부 감시.
fileWatcher: VS Code가 inotify로 전체 파일을 감시하려 하면서 CPU/IO가 급등.
extensionHost: 설치된 확장(파이썬, 타입스크립트, Git 등)이 초기 인덱싱을 돌림.
ripgrep(rg): 검색 인덱스를 만들기 위해 대형 로그·git 폴더까지 긁음.
settings.json 예시:
{
// 워처 전면 차단 (진단용, 이후 점진 허용)
"files.watcherExclude": { "**": true },
// Git 패널/자동 갱신 꺼서 CPU 감소
"git.enabled": false,
// 확장 자동 업데이트 비활성화
"extensions.autoUpdate": false,
"extensions.autoCheckUpdates": false,
// JS/TS/NPM 자동 스캔 억제
"npm.autoDetect": "off",
"typescript.disableAutomaticTypeAcquisition": true,
"typescript.tsserver.useSeparateSyntaxServer": true,
"typescript.tsserver.experimental.useVsCodeWatcher": false,
// 불필요한 자동완성 줄이기
"javascript.suggest.completeFunctionCalls": false,
"editor.wordBasedSuggestions": false,
// 창/폴더 자동 복원 금지 → 큰 경로 열리는 문제 방지
"window.restoreWindows": "none",
"workbench.editor.restoreViewState": false,
"workbench.startupEditor": "none",
// 원격 포트 자동 스캔 차단
"remote.autoForwardPorts": false
}
/data 전체를 열지 말고, 실제 코드 폴더만 워크스페이스로 열기.
logs/, backup/, node_modules/, .venv/ 같은 건 워크스페이스 밖으로.
워크스페이스 루트에 .ignore 파일 추가:
logs/
*.log
*.gz
*.csv
node_modules/
.venv/
dist/
build/
→ VS Code 내부 검색(rg)도 이 경로를 무시.
Remote-SSH, Python 등 필수만 ON
GitLab, ESLint, Prettier, 테마/아이콘팩 등은 원격에서 OFF
renice, ionice로 extensionHost/fileWatcher 프로세스 우선순위 낮추기
필요시 cpulimit/cgroup으로 CPU 쿼터 제한
접속 직후 CPU가 100%(적용 전) → 40%(적용 후) 이하로 순간 치솟았다가 바로 안정화
서버 전체 서비스(nginx, gunicorn 등)는 영향 거의 없음
워크스페이스를 코드 폴더로만 열면 체감상 CPU 스파이크조차 거의 사라짐
VS Code Remote-SSH는 정말 편리하지만,
“로그/대형 디렉터리를 통째로 열면 서버가 고통받는다” 는 교훈.
결국 핵심은 “필요한 것만 열기 + 불필요한 워치/인덱싱 끄기”.