Miałem dokładnie ten sam problem, dość długo mnie niepokoił. Jest to szczególnie denerwujące podczas pracy zdalnej przez SSH lub grania w gry wieloosobowe. Oto moje długoterminowe rozwiązanie:
Diagnoza
Uruchom ping z częstotliwością 10 skanów na sekundę, aby zobaczyć, kiedy występuje usterka:
ping 8.8.8.8 -i 0.1
Usługi skanowania i lokalizacji
Jak wspomniano przez innych, skoki Wi-Fi są zwykle spowodowane przez demona WiFi skanującego inne sieci WiFi w pobliżu. Skanowanie przebiega przez wszystkie kanały, więc jeśli bieżący kanał odbiorczy nie jest taki sam jak transmitowany przez twój AP, masz impuls ping.
Skanowanie jest zwykle uruchamiane przez usługi lokalizacyjne. Można zapoznać się z usług lokalizacji w: System Preferences -> Security & Privacy -> Privacy tab -> Location Services
.
Jeśli pójdziesz, aby Advanced
sprawdzić, czy Show location icon in the menu bar...
aplikacje sprawdzają lokalizację, skanując sąsiedztwo WiFi.
Usługi lokalizacyjne były nadal aktywne z powodu System services
. Głównie Time Zone & System Customisation
i Significant Locations
. Ale po wyłączeniu nadal miałem usterkę Wi-Fi, pomimo tego, że okno ustawień lokalizacji nie pokazywało żadnej innej aplikacji uzyskującej lokalizację.
Znalezienie sprawcy
Musisz włączyć rejestrowanie WiFi, aby zobaczyć, dlaczego demon WiFi wykonuje skanowanie.
Przytrzymaj option/alt
klawisz (obok klawisza polecenia) i kliknij ikonę WiFi na górnym pasku narzędzi. Kliknij Enable Wi-Fi Logging
.
Następnie otwórz nowy terminal:
tail -f /var/log/wifi.log
Powinieneś zobaczyć coś takiego:
Mon Jan 14 20:01:21.353 AutoJoin: <airportd[83093]> Successful cache-assisted scan request for texstudio with channels {(
Mon Jan 14 20:01:21.353 <CWChannel: 0x7fbcfadc5b20> [channelNumber=56(5GHz), channelWidth={40MHz(-1)}, active, DFS],
Mon Jan 14 20:01:21.353 <CWChannel: 0x7fbcfadcbfb0> [channelNumber=60(5GHz), channelWidth={40MHz(+1)}, active, DFS],
Mon Jan 14 20:01:21.353 <CWChannel: 0x7fbcfd44c790> [channelNumber=64(5GHz), channelWidth={40MHz(-1)}, active, DFS],
Mon Jan 14 20:01:21.353 <CWChannel: 0x7fbcfadc6ba0> [channelNumber=149(5GHz), channelWidth={80MHz}, active],
Mon Jan 14 20:01:21.353 <CWChannel: 0x7fbcfad2be90> [channelNumber=153(5GHz), channelWidth={80MHz}, active],
Mon Jan 14 20:01:21.353 <CWChannel: 0x7fbcfadf4870> [channelNumber=157(5GHz), channelWidth={80MHz}, active]
Mon Jan 14 20:01:21.353 )} took 0.0005 seconds, returned 2 results
Mon Jan 14 20:01:21.353 Scan: <airportd[83093]> Cache-assisted scan request for texstudio on channel 161 does not require a live scan
Mon Jan 14 20:01:21.353 Scan: <airportd[83093]> Cache-assisted scan request for texstudio on channel 165 does not require a live scan
Mon Jan 14 20:01:21.353 Scan: <airportd[83093]> Cache-assisted scan request for texstudio on channel 100 does not require a live scan
Mon Jan 14 20:01:21.353 Scan: <airportd[83093]> Cache-assisted scan request for texstudio on channel 104 does not require a live scan
Mon Jan 14 20:01:21.353 Scan: <airportd[83093]> Cache-assisted scan request for texstudio on channel 108 does not require a live scan
Mon Jan 14 20:01:21.353 Scan: <airportd[83093]> Cache-assisted scan request for texstudio on channel 112 does not require a live scan
Mon Jan 14 20:01:21.353 Scan: <airportd[83093]> Cache-assisted scan request for texstudio does not require a live scan
Teraz obserwuj obok siebie terminal ping i terminal dziennika Wi-Fi. Możesz wyraźnie zobaczyć występowanie usterki dokładnie podczas skanowania Wi-Fi.
W moim przypadku winowajcą był program texstudio
, jak widać z dziennika. Pozyskiwanie lokalizacji odbywało się co 5 sekund (wt.?), Co potwierdził również ten facet: https://justus.berlin/2016/04/ redukcja on-the-mac /
To rozwiązało mój problem. Texstudio nie było wymienione na liście usług lokalizacyjnych, więc to zaawansowane podejście było konieczne.
Streszczenie:
- Winowajcą są usługi lokalizacyjne i skanowanie Wi-Fi
- Sprawdź włączone usługi lokalizacyjne
- Przytrzymaj klawisz klawiatury Option, kliknij ikonę WiFi na górnym pasku narzędzi, kliknij Włącz rejestrowanie Wi-Fi
- Wykonaj w terminalu: ping 8.8.8.8 -i 0.1
- Wykonaj w terminalu: tail -f /var/log/wifi.log, w nowym oknie. Obserwuj obok siebie, poczekaj na usterkę.
- Sprawdź dziennik, kiedy zaobserwowano usterkę, zabij program.