Настройка расширенных параметров кэширования контента на Mac
Вы можете использовать расширенные параметры конфигурации, чтобы выполнить точную настройку кэширования контента с учетом конфигурации Вашей сети.
Вы можете задать расширенные настройки кэша контента с помощью командной строки в Терминале или с помощью значений ключей в файле /Библиотеки/Preferences/com.apple.AssetCache.plist. Чтобы активировать некоторые изменения, необходимо остановить и перезапустить кэширование контента.
Использование Терминала для настройки расширенных параметров конфигурации
В программе «Терминал» на Mac Вы можете настроить расширенные параметры конфигурации, используя команду defaults
, а затем команду sudo AssetCacheManagerUtil reloadSettings
. Используйте команды AssetCacheManagerUtil settings
для просмотра стандартных (не расширенных) настроек.
Подробнее о команде AssetCacheManagerUtil
см. в разделе Управление кэшированием контента из командной строки и на man-странице команды AssetCacheManagerUtil(8).
Команда defaults
позволяет настроить как простые, так и сложные ключи.
Например, чтобы задать для ключа Interface
значение en1, выполните следующую команду от имени администратора:
$ sudo -u _assetcache defaults write /Library/Preferences/com.apple.AssetCache.plist Interface -string en1
ListenRanges
— это сложный ключ, который принимает массив словарей. Например, выполните следующую команду от имени администратора, чтобы задать два диапазона IP-адресов для ключа ListenRanges:
$ sudo -u _assetcache defaults write /Library/Preferences/com.apple.AssetCache.plist ListenRanges '( { first = 10.0.0.1; last = 10.0.0.254; }, { first = 10.1.0.1; last = 10.1.0.254; } )'
После использования команды defaults обязательно выполните следующую команду, чтобы перезагрузить настройки кэша контента:
$ sudo AssetCacheManagerUtil reloadSettings
Для получения более подробной информации о команде defaults
перейдите на man-страницу команды defaults(1).
Ключи и значения в файле plist конфигурации кэширования
Важно! Не изменяйте никакие настройки в файле com.apple.AssetCache.plist, кроме описанных в таблице ниже.
Ключ может иметь значение, которое фиксировано в пределах двух границ. Значение ключа может быть любым числом в диапазоне между значениями нижней и верхней границы. Если задать значение ниже значения нижней границы, используется значение нижней границы. Если задать значение выше значения верхней границы, используется значение верхней границы. Например, ключ PeerDownloadTimeout ограничен значениями 5 и 300. Если задать значение 301 или 1000, будет использовано значение 300. Если задать значение 4 или -10, будет использовано значение 5.
Некоторые изменения вступают в силу после выполнения команды AssetCacheManagerUtil reloadSettings
; для активации других изменений требуется остановить и снова запустить кэширование контента. Команда reloadSettings действует только на те ключи, которые также могут быть настроены на панели «Кэширование контента» (отмечены в таблице ниже). Чтобы задать значения на панели «Кэширование контента», выберите меню Apple > «Системные настройки», нажмите «Общий доступ», затем нажмите «Кэширование контента».
Ключ | Описание | По умолчанию | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
AgeForLowSpaceAlert | Если из-за отсутствия свободного места на диске из кэша контента удаляется содержимое, которое было добавлено в него меньше указанного количества дней назад, Вы получаете предупреждение о недостаточном количестве места на диске. | 30 (дней) | |||||||||
AllowCacheDelete | Разрешить автоматическое удаление содержимого из кэша, если компьютеру нужно освободить пространство на диске для других программ. | Yes | |||||||||
AllowImports | Разрешить запросы на импорт (выгрузку). | Yes | |||||||||
AllowPersonalCaching | Разрешить кэширование данных iCloud пользователя. Как минимум один из ключей AllowPersonalCaching и AllowSharedCaching должен иметь значение yes. Это значение также можно задать на панели настроек «Кэширование контента». | Yes | |||||||||
AllowSharedCaching | Разрешить кэширование контента, хранящегося за пределами iCloud, например программ и обновлений ПО. Как минимум один из ключей AllowPersonalCaching и AllowSharedCaching должен иметь значение yes. | Yes | |||||||||
AllowWirelessPortable | Разрешить портативным компьютерам, которые могут подключаться к сети только по Wi-Fi, выполнять кэширование контента. | Yes | |||||||||
CacheLimit | Максимальное количество дискового пространства (в байтах), которое будет использовано для кэша контента. Это значение также можно задать на панели настроек «Кэширование контента». | 0 (без ограничения) | |||||||||
DatabaseUpdateInterval | Частота, с которой кэш контента сохраняет изменения в своей базе данных на диске. При увеличении интервала возрастает риск потери кэшированного контента в случае сбоя питания. Максимальное значение составляет 3600 секунд (1 час). Интервал 0 означает, что база данных всегда обновляется немедленно, без задержки, что снижает производительность. | 5 (секунд) | |||||||||
DataPath | Путь к каталогу, используемому для хранения кэшированного содержимого. Если изменить это значение вручную, кэшированное содержимое не будет автоматически перенесено из старого местоположения в новое. Чтобы автоматически переместить содержимое, используйте панель настроек «Кэширование контента» (см. Выбор тома для кэширования). Это значение также можно задать на панели настроек «Кэширование контента». | /Library/Application Support/Apple/AssetCache/Data | |||||||||
DownloadMinRate | Минимальная скорость (количество байт в секунду), которую должны поддерживать клиенты при загрузке содержимого из кэша контента. Кэш контента останавливает загрузки, если скорость передачи данных ниже данного значения. Минимальная скорость составляет 1000 байт в секунду. | 8000 (байт в секунду) | |||||||||
DownloadTimeout | Период ожидания (в секундах), в течение которого кэш контента должен ждать загрузки клиентом при отсутствии передачи, прежде чем прервать операцию. Минимальное значение составляет 10 секунд. | 180 (секунд) | |||||||||
ImportMaxRate | Максимальная скорость (количество байт в секунду), с которой кэш контента получает данные от каждого клиента. Значение 0 означает, что количество байт в секунду не ограничено. | 0 (байт в секунду) | |||||||||
ImportMinRate | Минимальная скорость (количество байт в секунду), которую должны поддерживать клиенты при импорте (выгрузке) содержимого. Кэш контента останавливает операцию импорта, если скорость передачи данных ниже данного значения. Минимальная скорость составляет 100 байт в секунду. | 2000 (байт в секунду) | |||||||||
ImportRateAttenuation | Время затухания (в процентах), добавленное ко времени выгрузки. Фиксированный минимум составляет 0%. Слишком большие значения приведут к превышению ImportTimeout и будут вызывать неполадки. | .20 (процента) | |||||||||
ImportTimeout | Период ожидания (в секундах), в течение которого кэш контента должен ждать импорта (выгрузки) от клиента при отсутствии передачи, прежде чем прервать операцию. Минимальное значение составляет 10 секунд. | 300 (секунд) | |||||||||
Interface | Имя BSD сетевого интерфейса, используемого кэшем контента. | Прослушивание всех интерфейсов | |||||||||
ListenRanges | Массив словарей, описывающих диапазон IP-адресов обслуживаемых клиентов. Пример использования ключа ListenRanges см. ниже. Это значение также можно задать на панели настроек «Кэширование контента». | нет | |||||||||
ListenRangesOnly | Если для ключа ListenRangesOnly задано значение true, кэш контента предоставляет содержимое только тем клиентам, которые находятся в диапазонах, заданных с помощью ключа ListenRanges. Чтобы использовать ключ ListenRangesOnly, необходимо также задать значение для ключа ListenRanges. Это значение также можно задать на панели настроек «Кэширование контента». | No | |||||||||
ListenWithPeersAndParents | Показывает, регистрирует ли кэш контента союз ключей ListenRanges, PeerListenRanges и Parents или же только ключ ListenRanges. Обратите внимание, что значение ListenRanges может автоматически генерироваться из LocalSubnetsOnly, а значение PeerListenRanges — из PeerLocalSubnetsOnly. | Значение, установленное по умолчанию, зависит от истории использования компьютера:
| |||||||||
LocalSubnetsOnly | Должен ли кэш контента предоставлять содержимое только тем клиентам, которые находятся в той же локальной сети, что и кэш контента, а не клиентам во всех локальных сетях, доступных кэшу контента. Это значение также можно задать на панели настроек «Кэширование контента». | Yes | |||||||||
LogClientIdentity | Должен ли кэш контента сохранять в журнале IP-адреса и номера портов клиентов, которые запрашивают содержимое. | No | |||||||||
MaxConcurrentClients | Это ограничение не позволяет службе кэширования контента исчерпать дескрипторы файлов. Apple не гарантирует, что количество клиентов кэша контента может достичь 3400 одновременных клиентов. | 3400 | |||||||||
MaxParentDepth | Максимальное количество переадресаций одного запроса от дочернего кэша контента родительскому кэшу контента. Слишком глубокие запросы (имеющие слишком длинную цепочку переадресации) возвращаются отправителю без передачи в следующий родительский узел. | 8 | |||||||||
MaxPeersToQuery | Максимальное количество одноранговых кэшей контента, которым будет отправлен запрос на доступ к содержимому. | 0 (без ограничения) | |||||||||
MetricsInterval | Как часто, в секундах, следует добавлять строку в базу данных метрики по адресу /Library/Application Support/Apple/AssetCache/Metrics/Metrics.db.
Значение ограничено диапазоном от 1 до 60 секунд включительно. Просмотреть эти метрики можно в панели «Кэш» программы «Мониторинг системы». | 60 (секунд) | |||||||||
MetricsMaxAge | Метрики, которые старше этого значения, удаляются из базы данных метрик один раз в день. Фиксированный минимум составляет 30 дней. | 30 (дней) | |||||||||
OriginDownloadTimeout | Период ожидания (в секундах), в течение которого кэш контента должен ждать загрузки с серверов Apple при отсутствии передачи (и по возможности пытаться повторить загрузку), прежде чем прервать операцию. Значение ограничено диапазоном от 5 до 300 секунд включительно. | 60 | |||||||||
OriginUploadTimeout | Период ожидания (в секундах), в течение которого кэш контента должен ждать выгрузки на исходный сервер при отсутствии передачи, прежде чем прервать операцию. Значение ограничено диапазоном от 5 до 3600 секунд включительно. | 600 | |||||||||
ParentDownloadTimeout | Период ожидания (в секундах), в течение которого кэш контента должен ждать загрузки из родительского кэша контента при отсутствии передачи (и по возможности пытаться повторить загрузку), прежде чем прервать операцию. Значение ограничено диапазоном от 5 до 300 секунд включительно. | 60 | |||||||||
ParentRetryInterval | Период (в секундах), в течение которого кэш контента должен игнорировать родительский кэш после пяти сетевых сбоев или ошибок сервера подряд. Значение ограничено диапазоном от 30 до 3600 секунд включительно. | 900 | |||||||||
Parents | Список локальных IP-адресов других кэшей контента, которые должен использовать для загрузки и выгрузки содержимого этот кэш вместо того, чтобы обмениваться данными напрямую с Apple. Недействительные адреса и адреса компьютеров, которые не являются кэшами контента, игнорируются. Недоступные родительские кэши пропускаются в соответствии с настройкой ParentRetryInterval. Если все родительские кэши недоступны, кэш контента будет загружать содержимое напрямую из Apple и выгружать содержимое напрямую в Apple, пока один из родительских кэшей контента снова не станет доступен. Это значение также можно задать на панели настроек «Кэширование контента». | нет | |||||||||
ParentSelectionPolicy | Политика выбора одного из нескольких настроенных родительских кэшей контента. При использовании любой политики временно недоступные родительские кэши пропускаются. Доступны следующие политики:
Это значение также можно задать на панели настроек «Кэширование контента». | round-robin | |||||||||
ParentUploadTimeout | Период ожидания (в секундах), в течение которого кэш контента должен ждать выгрузки в родительский кэш контента при отсутствии передачи, прежде чем прервать операцию. Значение ограничено диапазоном от 5 до 3600 секунд включительно. | 600 | |||||||||
PeerDownloadTimeout | Период ожидания (в секундах), в течение которого кэш контента должен ждать загрузки из однорангового кэша контента при отсутствии передачи (и по возможности пытаться повторить загрузку), прежде чем прервать операцию. Значение ограничено диапазоном от 5 до 300 секунд включительно. | 30 | |||||||||
PeerFilterRanges | Если PeerFilterRanges является массивом (из записей, которые аналогичны используемым для ListenRanges), кэш контента фильтрует и сортирует свой список одноранговых узлов в соответствии с диапазонами в массиве. Кэш контента отправляет запросы только тем одноранговым узлам, которые входят в PeerFilterRanges. Фильтрация и сортировка применяются перед обрезкой списка узлов в соответствии с MaxPeersToQuery (если это значение задано). Если PeerFilterRanges является пустым массивом, кэш контента не отправляет запросы одноранговым узлам. Если PeerFilterRanges является логическим значением true, кэш контента выполняет указанные выше действия, но использует значение ListenRanges, а не PeerFilterRanges. Если PeerFilterRanges имеет любой другой тип или значение отсутствует, кэш контента не фильтрует и не сортирует свой список одноранговых узлов перед обрезкой списка в соответствии с MaxPeersToQuery. PeerFilterRanges влияет только на список других кэшей контента, к которым обращается данный кэш контента для получения контента или загрузок. Он не влияет на входящие запросы на содержимое, поступающие от других кэшей контента. Это значение также можно задать на панели настроек «Кэширование контента». | нет | |||||||||
PeerListenRanges | Если PeerListenRanges является массивом словарей, в котором каждый словарь представляет диапазон IP-адресов, кэш контента будет предоставлять информацию в ответ на запросы только тех одноранговых кэшей, чьи IP-адреса содержатся в этом массиве диапазонов. Если PeerListenRanges является пустым массивом, кэш контента будет возвращать ошибку в ответ на запросы от любых других кэшей контента. Если PeerListenRanges являет логическим значением true, то чтобы решить, на запросы каких других кэшей контента будет предоставлять информацию этот кэш контента, он будет использовать значение ListenRanges, а не значение PeerListenRanges. Если PeerListenRanges имеет любой другой тип или значение отсутствует, кэш контента будет предоставлять информацию в ответ на запросы от всех других кэшей контента. PeerListenRanges влияет только на то, каким кэшам контента будет предоставлять информацию этот кэш контента в ответ на их запросы. Он не влияет на список одноранговых узлов, к которым будет обращаться данный кэш контента и из которых он будет загружать содержимое. Если первый кэш контента возвращает ошибку в ответ на запрос от второго кэша, то второй кэш помечает первый кэш как недружелюбный и больше не пытается отправлять ему запросы, пока не истечет время PeerRetryInterval. Это значение также можно задать на панели настроек «Кэширование контента». | нет | |||||||||
PeerLocalSubnetsOnly | Должен ли кэш контента считать одноранговыми только те кэши контента, которые находятся в той же локальной сети, а не кэши контента, использующие такой же общедоступный IP-адрес, какой использует этот компьютер. Если PeerLocalSubnetsOnly имеет значение true, кэш контента отправляет запросы и возвращает информацию только одноранговым кэшам в той же локальной сети. Если PeerLocalSubnetsOnly имеет значение true, он переопределяет настройки PeerFilterRanges и PeerListenRanges. Если PeerLocalSubnetsOnly имеет значение false, кэш контента использует ограничения одноранговых узлов из PeerFilterRanges и PeerListenRanges. Если PeerLocalSubnetsOnly имеет значение true, то при изменении сети происходит соответствующее обновление ограничений одноранговых узлов локальной сети. Это значение также можно задать на панели настроек «Кэширование контента». | Yes | |||||||||
PeerNotifyTimeout | Период ожидания (в секундах), в течение которого кэш контента должен ждать ответа от одноранговых кэшей контента при отправке ping-запроса во время запуска. Значение ограничено диапазоном от 5 до 300 секунд включительно. | 30 | |||||||||
PeerQueryTimeout | Период ожидания (в секундах), в течение которого кэш контента должен ждать ответа от одноранговых кэшей контента после отправки запроса об их содержимом. Значение ограничено диапазоном от 1 до 60 секунд включительно. | 5 | |||||||||
PeerRetryInterval | Период (в секундах), в течение которого кэш контента должен игнорировать одноранговый кэш после трех неудавшихся попыток уведомления или запроса подряд. По прошествии указанного периода одноранговые кэши контента восстанавливаются в списке узлов, и кэш будет снова запрашивать у них содержимое. Значение ограничено диапазоном от 30 до 3600 секунд включительно. | 900 (секунд) | |||||||||
PersonalCacheLimit | Ограничивает дисковое пространство (в байтах), используемое кэшем контента для кэшированных данных iCloud. Значение PersonalCacheLimit не должно превышать CacheLimit. | 0 (без ограничения) | |||||||||
Порт | Номер порта TCP, на котором кэш контента принимает запросы на выгрузку или загрузку. | 0 (использовать случайный порт) | |||||||||
PruneAffinitiesAge | Привязки пользователей старше этого количества дней автоматически удаляются из кэша привязок. Привязки пользователей сообщают клиентам приблизительное место кэширования их контента для повышения производительности. Удаление привязок пользователей не оказывает влияния на кэшированное содержимое. Фиксированный минимум составляет 7 дней. | 30 (дней) | |||||||||
PruneAffinitiesInterval | Частота (в днях), с которой кэш контента должен искать и удалять привязки пользователей старше PruneAffinitiesAge дней. Привязки пользователей, используемые только iCloud, сообщают клиентам приблизительное место кэширования их контента для повышения производительности. Удаление привязок пользователей не оказывает влияния на кэшированное содержимое. Фиксированный минимум составляет один день. | 7 (дней) | |||||||||
PruneAssetsAge | Содержимое, которое не запрашивалось данное количество дней, автоматически удаляется из кэша контента. Фиксированный минимум составляет 7 дней. | 120 (дней) | |||||||||
PruneAssetsInterval | Частота (в днях), с которой кэш контента должен искать и удалять содержимое старше PruneAssetsAge дней. Фиксированный минимум составляет один день. | 7 (дней) | |||||||||
PublicRanges | Диапазоны общедоступных IP-адресов, используемые облачными серверами для сопоставления клиентов с кэшами контента. Это значение также можно задать на панели настроек «Кэширование контента». | нет значения по умолчанию | |||||||||
ReservedVolumeSpace | Минимальное количество свободного дискового пространства (в байтах), которое должно поддерживаться для тома, где хранится кэшированное содержимое. | 2000000000 (2 ГБ) | |||||||||
TerminationTimeout | Период (в секундах), в течение которого кэш контента должен продолжать попытки отмены регистрации при его остановке. Отмена регистрации сообщает клиентам о том, что кэш контента больше не доступен, чтобы они не пытались его использовать (до момента повторного запуска этого кэша). Значение ограничено диапазоном от 1 до 60 секунд включительно. | 10 (секунд) | |||||||||
Verbose | Если Verbose имеет значение true, кэш контента сохраняет в журнале немного больше информации о своих действиях. Регистрация дополнительных данных может привести к снижению производительности. Не рекомендуется надолго включать эту настройку. Для просмотра журналов кэширования контента используйте команду Например: Для просмотра журналов также можно использовать программу «Консоль». | No |
Пример использования ключа ListenRanges
Вы можете использовать ключ ListenRanges, чтобы указать предпочитаемые кэши контента в расширенных топологиях сетей, в которых несколько кэшей контента используются под одним общим IP-адресом.
Например:
caching1.example.com использует ключ ListenRanges, чтобы указать диапазон с 10.0.0.1 по 10.0.0.254 и с 10.1.0.1 по 10.1.0.254, и задает для ключа ListenRangesOnly значение «No».
caching2.example.com использует ключ ListenRanges, чтобы указать диапазон с 10.1.0.1 по 10.1.0.39 (обратите внимание на частичное совпадение со вторым диапазоном caching1), и задает для ключа ListenRangesOnly значение «No».
Если клиент с IP-адресом 10.0.0.10 запросит содержимое, он будет перенаправлен на caching1.
Если клиент с IP-адресом 10.1.0.10 запросит содержимое, он будет перенаправлен на caching1 либо на caching2. Кэш выбирается случайным образом.
Если клиент с IP-адресом 10.2.0.10 запросит содержимое, он будет перенаправлен на caching1 либо на caching2. Кэш выбирается случайным образом.
Если caching1 не работает или его производительность снижается, а caching2 доступен, все клиенты будут перенаправлены на caching2.
Пример файла plist
Ниже приведен пример файла /Библиотеки/Preferences/com.apple.AssetCache.plist.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CacheLimit</key>
<!-- Set a CacheLimit of 200 GB -->
<integer>200000000000</integer>
<key>DataPath</key>
<string>/Volumes/BigDisk/Library/Application Support/Apple/AssetCache/Data</string>
<key>Interface</key>
<string>en1</string>
<key>ListenRanges</key>
<array>
<dict>
<key>type</key>
<string>IPv4</string>
<key>first</key>
<string>10.1.2.1</string>
<key>last</key>
<string>10.1.2.254</string>
</dict>
<dict>
<key>type</key>
<string>IPv6</string>
<key>first</key>
<string>2001:500:88:200::1</string>
<key>last</key>
<string>2001:500:88:200::99</string>
</dict>
</array>
<key>LogClientIdentity</key>
<string>true</string>
<key>Port</key>
<integer>12345</integer>
<key>ReservedVolumeSpace</key>
<!-- Set the ReservedVolumeSpace to 1 GB -->
<integer>1000000000</integer>
</dict>
</plist>