Краткий ответ: что обычно съедает ваши данные
В большинстве случаев трафик идет из одного из пяти источников. Software Update загружает выпуск macOS или обновление безопасности в фоновом режиме, и для полного обновления это обычно 3 to 6 GB, а крупное обновление может быть заметно больше. iCloud Photos и iCloud Drive синхронизируют новую партию фотографий, видео или файлов, где всего несколько минут 4K-видео с вашего iPhone могут занимать несколько сотен мегабайт. Автоматические обновления App Store, когда несколько крупных приложений легко набегают на гигабайт или два. Сторонние клиенты синхронизации, такие как Dropbox, Google Drive или OneDrive, повторно загружают или переиндексируют папку. И видео во вкладке браузера, включая ленты с автозапуском и фоновые вкладки, о которых вы забыли, где потоковое видео в 1080p обычно расходует примерно 1.5 to 3 GB в час.
Если вы были подключены через модем и цифра оказалась очень большой, то с огромным отрывом два наиболее вероятных виновника, это Software Update и синхронизация iCloud. Оба рассчитаны на тихую работу, оба предпочитают запускаться, когда Mac простаивает и подключен к питанию, и ни один из них не считает соединение дорогим, если только вы явно не скажете macOS, что оно тарифицируется.
Почему это так трудно поймать на месте, так это потому, что ни один из этих процессов не подает о себе знать. macOS показывает индикатор прогресса для загрузки на переднем плане в Safari, но ничего похожего для фонового демона синхронизации. К тому моменту, как вы увидите предупреждающий текст от оператора, передача уже закончена, и встроенного журнала, который можно было бы открыть и прочитать, нет.
Дальше в статье мы подробнее разберем весь список виновников, затем покажем, как наблюдать трафик по процессам прямо во время его работы, и, наконец, как ограничить его так, чтобы фоновый сервис физически не мог потратить больше, чем вы разрешили.
Настоящие виновники, в порядке степени нанесенного ими ущерба
Software Update. Это главный источник. macOS заранее загружает обновления в фоновом режиме, чтобы установка прошла быстро, когда вы в итоге согласитесь, и по умолчанию это происходит всякий раз, когда доступна сеть. Точечное обновление часто весит несколько гигабайт, а крупный переход на новую версию еще больше. Вы можете отключить автоматическую загрузку в Системных настройках в разделе Основные, затем Обновление ПО, открыв маленькую кнопку информации рядом с Автоматическими обновлениями и отключив параметр загрузки новых обновлений при их наличии. Оставить включенными ответы безопасности и выключить массовые загрузки, это разумный компромисс.
iCloud Photos и iCloud Drive. Если вы снимаете видео на iPhone, iCloud Photos попытается загрузить на Mac оригиналы или оптимизированные версии, и ему все равно, что вы находитесь на хотспоте. iCloud Drive ведет себя так же с документами. Оба сервиса стоит приостанавливать перед подключением через модем. Синхронизация фототеки особенно склонна к резким всплескам, потому что всего один день съемки может поставить в очередь несколько гигабайт загрузки и выгрузки, которые начнутся при следующем подключении Mac к сети.
Автоматические обновления App Store. Современные приложения для Mac не маленькие. Приложения на Electron часто весят 150 to 300 MB за обновление, профессиональные творческие инструменты легко доходят до гигабайта и больше, а App Store с удовольствием заберет все ожидающие обновления сразу. Автоматические загрузки можно отключить в настройках App Store.
Sync clients: Dropbox, Google Drive, OneDrive, Box. Обычно они ведут себя нормально, пока на другой стороне что-то не изменится. Общая папка переорганизована, коллега загрузил видео, или клиент решил заново проверить локальный кэш, и внезапно он начинает гонять гигабайты. У большинства из них есть пауза и настройка полосы пропускания, но они не поставят себя на паузу только потому, что вы сменили сеть.
Time Machine to a network destination. Если место для резервной копии, это NAS или сетевой ресурс, а не подключенный напрямую диск, Time Machine попробует выполнять ежечасное резервное копирование через любое доступное соединение. На хотспоте это очень дорогая привычка. Time Machine не будет использовать соединение, которое macOS пометила как режим низких данных, но в остальном он ничего не знает о вашем тарифе.
Все остальное, что тихо набегает. Mail, который получает сообщения с большими вложениями, особенно если настроено несколько аккаунтов на загрузку полных сообщений. Spotlight и предложения Siri, которые делают мелкие, но постоянные запросы. Messages, который загружает фотографии и видео, отправленные в групповые переписки. Инструменты разработчика, которым стоит уделить отдельное внимание: одна загрузка образа Docker обычно занимает несколько сотен мегабайт, среды выполнения симуляторов Xcode весят по несколько гигабайт каждая, а установка зависимостей для нового проекта может неожиданно оказаться тяжелой. Службы резервного копирования, такие как Backblaze или Arq, тоже будут работать непрерывно, если их явно не приостановить.
Как реально определить, какое приложение отвечает
В macOS для этого есть один инструмент, и полезно понимать, что именно он умеет, а где его возможности заканчиваются. Откройте Activity Monitor из Applications, затем Utilities, и выберите вкладку Network. Вы увидите список процессов с колонками для отправленных байт, полученных байт, отправленных пакетов и полученных пакетов. Нажмите на заголовок колонки Rcvd Bytes, чтобы отсортировать по убыванию, и процесс, который потребляет больше всего, окажется наверху.
Это действительно полезно, когда нужно поймать что-то на месте. Если ваш Mac сейчас занят и вы хотите понять почему, отсортируйте по полученным байтам и понаблюдайте несколько секунд. Демон синхронизации или процесс обновления станет очевиден. Колонка Data Received внизу окна также показывает текущий итог.
Ограничение в том, что эти счётчики сбрасываются при перезапуске процесса и при перезагрузке, а Activity Monitor не хранит никакой истории. Если данные исчезли вчера, ночью или пока крышка была закрыта, вернуться и посмотреть их уже нельзя. Вы не можете узнать, что происходило между 2 и 4 часами утра. Он также показывает только имена процессов, а не назначения, поэтому вы увидите, что процесс передал 4 ГБ, но не узнаете, куда всё это ушло.
Есть и другие вещи, которые он не умеет. Он не различает Wi-Fi и ваш hotspot, поэтому трафик в дешёвой домашней сети и трафик в дорогом tethered-соединении складываются в один и тот же показатель. Он не предупреждает, когда процесс пересекает порог. И он не может ничего остановить, только показать. Единственный доступный рычаг, это принудительно завершить процесс, а это грубый инструмент, если этот процесс вам на самом деле нужен большую часть времени.
Для разовой диагностики, пока проблема происходит, Activity Monitor, это правильная первая остановка и часто всего, что нужно. Но чтобы понять картину за несколько дней или разобраться, что произошло задним числом, нужен инструмент, который ведёт историю и привязывает её к приложению. Именно этот пробел закрывают специализированные инструменты мониторинга: NetMute хранит историю трафика по приложениям вместе с логированием на уровне доменов, так что вы можете вернуться к конкретному периоду и увидеть, какое приложение было активно и с какими адресами оно связывалось. TripMode, это ещё один известный Mac-инструмент в этой области, и у него другой подход, он делает упор на полную блокировку приложений, пока вы подключены.
Отключение утечки: настройки, которые останавливают большинство из них
В macOS есть один встроенный механизм, который стоит использовать в первую очередь. Когда вы подключены к точке доступа iPhone, откройте System Settings, перейдите в Wi-Fi, нажмите Details рядом с сетью и включите Low Data Mode. Это сообщает системе, что соединение дорогое, и ряд сервисов Apple это учитывает: автоматические обновления откладываются, синхронизация iCloud замедляется или приостанавливается, Photos перестаёт синхронизироваться в фоновом режиме, а Time Machine не будет делать резервные копии через эту сеть. Для стороны Apple в этой проблеме это действительно эффективно.
Проблема в том, что Low Data Mode, это настройка для каждой сети, о которой нужно не забыть, её нужно включать вручную; она не применяется к новой точке доступа, к которой вы ещё не подключались, а сторонние приложения не обязаны её соблюдать. Dropbox, Docker, Backblaze и ваш браузер продолжат работать как раньше. Это хорошая первая линия защиты, но не полная.
Дальше стоит один раз сделать ручную настройку: отключите автоматическую загрузку в Software Update, выключите автоматические обновления приложений в настройках App Store, в поездках задайте Mail получение вручную или с большим интервалом и приостановите клиенты синхронизации перед подключением по раздаче. Если вы делаете резервное копирование по сети, исключите это место назначения или отключите бэкапы в дороге. Всё это несложно, но всё зависит от того, вспомните ли вы сделать это до того, как данные исчезнут, а не после.
Структурная проблема в том, что все эти настройки, это варианты с отключением, применяемые по одному к каждому приложению, и в macOS нет одного места, где можно сказать: «этому приложению в этом месяце можно 500 МБ, а потом всё». В этом и состоит разница между снижением риска и реальным ограничением.
Установка жёсткого лимита, чтобы этого больше не происходило
Надёжное решение, это лимит, который сам себя соблюдает. NetMute, это межприложенный firewall и монитор трафика для macOS, построенный на этой идее: вы задаёте дневной или месячный лимит для отдельного приложения или глобальный лимит для всего Mac, и он его соблюдает. Вы получаете уведомление, когда приложение достигает выбранного вами порога, например 80 процентов, а при 100 процентах оно блокируется автоматически. Если у Dropbox есть месячный лимит в 1 ГБ на вашем профиле с подключением через точку доступа, он не сможет его превысить, даже если в общей папке что-то изменилось.
Самое важное для пользователей точек доступа, это то, что лимиты могут отличаться в зависимости от сети. NetMute использует network profiles, которые автоматически переключаются в зависимости от Wi-Fi SSID, к которому вы подключены, так что ваша домашняя сеть может быть полностью открытой, а hotspot телефона, строгим профилем с жёсткими лимитами для каждого приложения. Есть и защита точки доступа, которая автоматически применяет строгий профиль при подключении к неизвестной сети, что полезно для Wi-Fi в отелях и аэропортах, где вы понятия не имеете, сколько на самом деле стоит соединение и насколько оно надёжно. Captive portals обрабатываются, поэтому страница входа в отельной сети всё равно загружается и работает нормально.
Помимо лимитов, есть монитор в реальном времени, показывающий, что сейчас передаёт каждое приложение, история, к которой можно вернуться, логирование на уровне доменов, чтобы видеть, куда реально идёт трафик, и блокировка в один клик с временными правилами, которые сами истекают, чтобы не накапливать кучу забытых правил firewall. Tracker Shield блокирует список из более чем 1 100 известных доменов трекеров, что даёт скромную, но не нулевую экономию поверх всего остального.
NetMute можно бесплатно загрузить в Mac App Store, а Premium, это разовая покупка внутри приложения, а не подписка. Пользуетесь вы им или нет, основной принцип всё равно стоит запомнить: на тарифицируемом соединении единственная надёжная защита, это потолок, который сам себя соблюдает, потому что все фоновые службы на вашем Mac создавались с предположением, что трафик бесплатный.