맥북 네트워크 속도 느릴 때 프로세스 초기화로 속도 빠르게 되돌리는 방법

🏷️ Mac

맥북 네트워크 속도가 느려졌다면 재부팅 대신 네트워크를 담당하는 프로세스만 재시작해 속도를 복구할 수 있습니다.

며칠 이상 켜 둔 맥북은 회선 속도가 그대로인데도 새 연결을 맺는 단계에서 지연이 생길 수 있습니다. 오래된 DNS 조회 기록과 인터페이스 구성이 네트워크 담당 프로세스에 계속 쌓이기 때문이고, 스트리밍 영상에서 버퍼링이 부쩍 늘어나는 증상으로 이어집니다.

재부팅이 가장 확실한 해결책이지만 편집 중인 문서와 터미널 세션이 여러 개 쌓여 있거나, 밤새 돌리는 렌더링과 대용량 다운로드, 예약해 둔 자동화 스크립트가 진행 중이라면 재부팅을 할 수 없는데요.

이 때 네트워크를 맡은 프로세스만 종료하면 macOS가 곧바로 새로 실행하므로 느려진 네트워크를 되돌릴 수 있으며 프로세스 3가지의 역할은 다음과 같습니다.

  • mDNSResponder: 도메인 주소를 IP 주소로 바꾸는 이름 조회를 담당합니다. 낡은 응답을 계속 들고 있으면 첫 로딩이 늘어집니다.
  • awdl0: 에어드롭과 핸드오프가 쓰는 인터페이스입니다. Wi-Fi 안테나를 나눠 쓰면서 재생 중인 영상에 버퍼링을 만듭니다.
  • configd: 인터페이스 구성, 라우팅, DNS 설정을 총괄하는 데몬입니다. 오래된 구성이 남으면 연결 전반이 굼떠집니다.

단, 여기서 말하는 초기화는 설정을 지우는 작업과 다릅니다. 저장된 Wi-Fi 비밀번호와 네트워크 목록은 그대로 남고 프로세스만 다시 뜨므로, 연결 설정을 새로 잡을 필요가 없습니다.

1. networkQuality로 맥북 네트워크 속도 측정하기

네트워크 속도의 기준값을 먼저 확인해야 프로세스를 초기화했을 때 속도가 복구되었는지 판별할 수 있습니다. 네크워크 속도 측정 도구는 macOS에 기본으로 들어 있으며 터미널에서 사용할 수 있습니다.

맥북의 네트워크 속도를 측정하려면, 응용 프로그램 > 유틸리티 > 터미널을 실행해 다음 명령을 입력합니다.

networkQuality -v
networkQuality 명령어 실행 후 unlink, Downlink, Responsiveness 값 확인하기

측정에는 15초 안팎이 걸리고, 결과는 용량과 지연 두 묶음으로 나뉩니다. Downlink capacity가 다운로드 속도이고, Responsiveness가 트래픽이 오가는 동안의 응답성입니다. 버퍼링과 직결되는 값 응답성(RPM)은 정상적인 작업 조건에서 1분 동안 네트워크가 수행할 수 있는 연속 왕복 횟수 또는 트랜잭션 수 입니다.

기준 수치를 외울 필요는 없습니다. networkQuality가 Responsiveness: Medium처럼 낮음, 중간, 높음 등급을 수치와 함께 출력합니다.

다운로드 속도는 계약한 회선에 가까운데 응답성 등급만 낮게 나온다면, 대역폭이 아니라 반응 속도에서 병목이 생긴 상태입니다. 이 병목이 맥북 내부의 프로세스 때문인지 공유기나 회선 때문인지는 2번부터 4번 조치를 적용하고 다시 측정해 판단합니다.

특정 인터페이스만 따로 재려면 networkQuality -v -I en0처럼 인터페이스를 지정합니다.

2. mDNSResponder를 재시작해 DNS 조회 지연 없애기

macOS는 웹페이지나 스트리밍 서버에 접속하기 전에 도메인 주소를 IP 주소로 바꿉니다. 이 조회를 담당하는 mDNSResponder가 낡은 응답 결과를 계속 들고 있으면, 맥북이 이미 바뀐 서버로 접속을 시도했다가 실패하고 다시 조회하는 과정이 반복되면서 첫 로딩이 늘어집니다.

macOS DNS 캐시 지우고 mDNSResponder 프로세스 다시 시작하기

DNS 조회 지연을 없애려면, 터미널에서 두 명령을 차례로 입력합니다.

sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

sudo 사용 시 관리자 암호를 요구합니다. 암호를 입력하는 동안 터미널에는 글자가 하나도 표시되지 않는데, 잘못 입력된 것이 아니라 터미널이 원래 암호를 숨기므로 그대로 입력하고 리턴 키를 누릅니다. 두 명령은 성공해도 메시지를 내보내지 않으므로, 프롬프트가 그대로 돌아오면 정상 처리된 상태입니다.

dscacheutil -flushcache는 디렉터리 서비스 캐시를 비웁니다. man dscacheutil은 이 옵션을 “극단적인 경우에만 사용해야 한다”고 적어 두었는데, 캐시에 함께 담긴 검증 정보까지 사라지기 때문입니다.

killall -HUP mDNSResponder는 해석기 프로세스를 종료하고, launchd가 /var/run/mDNSResponder 소켓으로 들어오는 첫 요청을 받는 즉시 새 프로세스를 띄웁니다.

mDNSResponder 초기화 관련 검색 결과에 자주 보이는 sudo launchctl unload /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist는 지금 macOS에서 통하지 않습니다. 시스템 무결성 보호(SIP)가 켜져 있으면 Operation not permitted를 돌려주고, 해당 plist의 실제 레이블도 com.apple.mDNSResponder.reloaded로 바뀌어 있어 예전 문서의 경로 지정이 맞지 않으니 참고하시길 바랍니다.

3. awdl0 인터페이스를 종료해 스트리밍 버퍼링 잡기

에어드롭, 핸드오프, 에어플레이는 awdl0이라는 별도 인터페이스로 동작합니다. 애플 배포 문서 Apple 기기에서 AirPlay 사용하기에서 이 기능들이 만드는 임시 네트워크가 “Wi-Fi 149+1번 채널에서 작동”한다고 설명하는데요. 맥북이 접속한 공유기 채널과 다른 채널이므로, 맥북은 안테나 하나로 두 채널을 번갈아 써야 합니다.

awdl0은 주변 기기를 찾으려고 초당 한 번씩 이 임시 채널로 건너뜁니다. awdl0이 채널을 옮겨 간 동안 공유기와 주고받던 일반 Wi-Fi 트래픽은 50~100ms씩 멈춰 서는데, 이 멈춤 증상이 스트리밍 영상 재생 시 버퍼링으로 나타날 수 있습니다.

에어드롭, 핸즈오프 동작을 구현하는 awdl0 인터페이스가 실행 중인지 확인하기

현재 상태를 확인하려면 다음 명령을 입력합니다.

ifconfig awdl0 | grep flags

출력에 UP과 RUNNING이 함께 보이면 인터페이스가 동작 중입니다. 스트리밍 버퍼링을 잡으려면 인터페이스를 내립니다.

에어드롭, 핸즈오프 awdl0 인터페이스 종료 명령어 실행하기, 해당 기능이 필요 시 자동으로 재시작된다
sudo ifconfig awdl0 down

채널 건너뛰기가 즉시 멈추므로 버퍼링도 바로 줄어듭니다. 기존 연결은 끊기지 않고 재생 중이던 영상도 멈추지 않습니다.

이 조치는 영구적이지 않으며 에어드롭을 실행하거나, 맥북이 잠자기에서 깨어나거나, Wi-Fi를 껐다 켜면 macOS가 awdl0을 다시 실행합니다. 기다리지 않고 직접 되돌리려면 sudo ifconfig awdl0 up을 실행합니다.

4. configd를 재시작해 네트워크 설정 전체 다시 적용하기

이 단계를 실행하면 3~5초 동안 네트워크가 끊깁니다. 화상 회의나 대용량 업로드가 진행 중이라면 인터넷 사용이 끝난 뒤에 실행합니다.

configd는 인터페이스 구성, 라우팅, DNS 설정을 통합 관리하는 데몬입니다. 2번과 3번 조치로 속도가 돌아오지 않으면 configd를 다시 띄워 네트워크 구성 전체를 처음부터 적용합니다.

configd 프로세스 다시 시작해 네트워크 설정 다시 로딩하기

configd를 재시작하려면, 터미널에서 종료 신호를 보냅니다.

sudo killall -TERM configd

종료된 configd는 곧바로 되살아납니다. 네트워크가 돌아오면 networkQuality -v를 다시 실행해 RPM이 올라갔는지 대조합니다.

마치며

오래 켜 둔 맥북에서 속도가 떨어지는 현상은 자연스러운 것으로 네트워크 프로세스가 시간과 함께 무거워지는 구조적 특성입니다.

일반적으로 재부팅 한 번이면 네트워크 속도 문제가 해결되지만 재부팅이 불가능한 상황에서는 관련 프로세스만 골라 다시 실행하는 것으로 재부팅과 같은 효과를 얻을 수 있으며 기존에 작업 흐름을 유지할 수 있습니다.

앞서 소개한 4단계를 한 번에 다 실행할 이유는 없습니다. 웹페이지 첫 로딩만 굼뜨면 2번에서, 영상 재생 중에만 버퍼링이 생기면 3번을 적용해 해결할 수 있습니다. 각각 방법을 적용한 후 networkQuality -v로 결과값을 대조하면 어느 지점이 원인이었는지도 알아낼 수 있습니다.

FAQ

이 명령어들을 자동으로 주기 실행하도록 걸어 둬도 되나요?

launchd나 cron으로 짧은 주기를 실행하면 캐시가 채워지기 전에 계속 비워져 모든 조회가 외부 DNS 서버까지 나가 조회 한 건당 왕복이 늘어나 오히려 첫 로딩이 느려지므로, 증상이 나타난 시점에 수동으로 실행하는 것이 좋습니다.

유선 이더넷으로 연결한 맥북에도 같은 방법이 통하나요?

1번, 2번, 4번은 연결 방식과 무관하게 동일하게 적용됩니다. 3번은 Wi-Fi 안테나를 나눠 쓰는 문제라 유선 구간에는 해당하지 않지만, 유선을 쓰면서 Wi-Fi도 켜 둔 상태라면 awdl0이 여전히 올라와 있으므로 점검할 이유는 있습니다.

4가지 단계를 모두 실행해도 속도가 돌아오지 않으면 무엇을 봐야 하나요?

네트워크 위치를 새로 만들어 구성 자체를 재생성합니다. sudo networksetup -createlocation "Refresh" populate로 위치를 만들고 sudo networksetup -switchtolocation "Refresh"로 전환하면 모든 네트워크 서비스가 새 구성으로 다시 세워집니다. 이 방법으로도 변화가 없으면 원인은 맥북 바깥, 공유기나 회선 쪽입니다.

macOS 프로세스네트워크맥북터미널

저자

댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Fill out this field
Fill out this field
올바른 이메일 주소를 입력해주세요.

같은 카테고리 글