🚀 컴퓨터 느려질 때 WSL + Playwright 좀비 프로세스 청소하기
WSL 환경에서 Playwright/Chrome 기반 크롤링을 오래 돌리다 보면, headless_shell 프로세스가 메모리를 잡아먹고 안 내려가는 경우가 있습니다.
이 상태가 오래 지속되면 Windows에서 vmmemWSL 프로세스가 수 GB~수십 GB까지 커져 PC 전체가 느려집니다.
아래 방법을 따라 하면 좀비 프로세스를 정리하고, 필요하면 WSL 전체 메모리 반환까지 할 수 있습니다.
1️⃣ 현재 메모리·CPU 점유 확인
Windows PowerShell에서:
# CPU/메모리 많이 쓰는 순서로 보기
Get-Process | Sort-Object CPU -desc | Select-Object -First 20
여기서 vmmemWSL이 크면 WSL 내부에서 무언가 메모리를 많이 쓰고 있는 것입니다.
chrome, headless_shell, python 프로세스가 보이면 크롤링/스크래핑 작업이 원인일 확률이 높습니다.
2️⃣ WSL 내부 좀비 프로세스 확인
PowerShell에서 WSL 진입:
wsl
WSL 안에서:
# 메모리 점유순 보기
top -o %MEM
# 크롤링 관련 프로세스만 보기
ps aux | egrep 'python|playwright|headless_shell|chrome|chromium' | grep -v grep
3️⃣ 좀비 프로세스 종료
WSL 안에서:
# 부드럽게 종료
pkill -f headless_shell || true
pkill -f "chrome --headless" || true
pkill -f playwright || true
pkill -f python || true
pkill -f uvicorn || true
pkill -f gunicorn || true
pkill -f "manage.py" || true
# 3초 후 남아있으면 강제 종료
sleep 3
pgrep -f "headless_shell|chrome|playwright|python|uvicorn|gunicorn|manage.py" | xargs -r kill -9
4️⃣ Docker 컨테이너도 종료
docker stop $(docker ps -q) 2>/dev/null
5️⃣ 메모리를 바로 반환하고 싶을 때
좀비 프로세스를 정리했는데도 vmmemWSL이 큰 상태라면, PowerShell에서:
wsl --shutdown
WSL이 완전히 종료되면서 메모리가 Windows로 반환됩니다.
⚠ 주의: WSL 내부에서 실행 중이던 모든 서버/컨테이너가 중단됩니다.
6️⃣ 한 줄 정리 스크립트 (WSL 내부)
매번 타이핑이 귀찮다면 WSL에 아래 스크립트를 저장해 두세요.
cleanup_zombies.sh
#!/bin/bash
echo "🔍 Killing zombie processes..."
pkill -f "headless_shell|chrome|playwright|python|uvicorn|gunicorn|manage.py" || true
sleep 2
pgrep -f "headless_shell|chrome|playwright|python|uvicorn|gunicorn|manage.py" | xargs -r kill -9
echo "🛑 Stopping Docker containers..."
docker stop $(docker ps -q) 2>/dev/null
echo "🧹 Cleaning Playwright cache..."
rm -rf ~/.cache/ms-playwright/* 2>/dev/null || true
echo "✅ Done."
실행 권한 부여:
chmod +x cleanup_zombies.sh
필요할 때:
./cleanup_zombies.sh
💡 결론:
- 크롤링/스크래핑 작업 중 headless_shell가 좀비처럼 남아 있으면 메모리 폭주가 발생합니다.
- 위 방법으로 WSL 내부에서 프로세스를 정리하면 Windows 전체 속도가 개선됩니다.
- 정기적으로 실행하거나, 자동화 스크립트로 등록해 두면 더 편합니다.