Вопрос:

Реактивный запуск дает мне сообщение «Ошибка сторожа: слишком много незавершенных заданий кэша»

react-native watchman

37 просмотра

2 ответа

4934 Репутация автора

проблема

Когда я создаю связку - сканирование при сбое изначально завершается неудачно с " too many pending cache jobs", что, кажется, замедляет процесс связывания:

$ react-native start --reset-cache

Загрузка графика зависимостей ... jest-haste-map: Сбой обхода сторожа. Повторная попытка с помощью сканера узлов.

Обычно это происходит, когда сторож не работает. Создайте пустой .watchmanconfigфайл в корневой папке вашего проекта или инициализируйте репозиторий git или hg в своем проекте.

Ошибка: ошибка сторожа: слишком много ожидающих заданий кэша. Убедитесь, что сторож работает для этого проекта. См. Https://facebook.github.io/watchman/docs/troublesho.html.

Кроме того, они могут быть связаны:

  • Я могу избавиться от ошибки, исключив node_modulesиз конфигурации часов
  • Без ошибки, а упаковщик запускается через 20 секунд
  • С ошибкой сканирование занимает 4 секунды, но упаковщик запускается через 4 минуты

Фон

Сценарии предварительной сборки

Я запускаю их перед сборщиком, чтобы попытаться получить больше стабильности:

watchman watch-del-all
watchman shutdown-server
sudo sysctl -w kern.maxfiles=5242880
sudo sysctl -w kern.maxfilesperproc=524288

Конфигурационный файл сторожа

Я установил для моего .watchconfigфайла дополнительные допустимые значения:

{
  "ignore_dirs": [],
  "fsevents_latency": 0.5,
  "fsevents_try_resync": true
}

Журнал сторож

Сканирование завершается в течение нескольких секунд в соответствии с полным журналом

$ tail -f /usr/local/var/run/watchman/coolman-state/log
22:08:24,193: [client=0x7ff4a9686d98:stm=0x7ff4a9b2de00:pid=0] send_error_response: too many pending cache jobs
22:08:24,340: [listener] Watchman 4.9.0 <no build info set> starting up on coolman
22:08:24,341: [listener] path /Users/coolman/project/react-native-app is on filesystem type apfs
22:08:24,342: [listener] root /Users/coolman/project/react-native-app using watcher mechanism fsevents (auto was requested)
22:08:24,344: [listener] file limit is 2560 kern.maxfilesperproc=524288
22:08:24,344: [listener] raised file limit to 524288
22:08:24,345: [listener] launchd: "sock" wasn't present in Sockets
22:08:28,805: [io 0x7f87ba000818 /Users/coolman/project/react-native-app] PERF: {"ru_nvcsw": 1460, "ru_nsignals": 0, "ru_msgrcv": 0, "ru_msgsnd": 0, "ru_inblock": 0, "ru_majflt": 0, "ru_nswap": 0, "ru_minflt": 28103, "ru_ixrss": 0, "ru_maxrss": 115109888, "system_time": 2.9349970000000001, "user_time": 1.327971, "elapsed_time": 4.4614079999999996, "pid": 29414, "ru_idrss": 0, "meta": {"root": {"watcher": "fsevents", "ticks": 2, "number": 1, "case_sensitive": false, "recrawl_count": 0, "path": "/Users/coolman/project/react-native-app"}}, "version": "4.9.0", "ru_oublock": 0, "ru_nivcsw": 2171, "start_time": 1564952904.3444469, "description": "full-crawl"}
22:08:28,805: [io 0x7f87ba000818 /Users/coolman/project/react-native-app] crawl complete
Автор: Ashley Coolman Источник Размещён: 04.08.2019 10:28

Ответы (2)


1 плюс

370 Репутация автора

echo 256 | sudo tee -a /proc/sys/fs/inotify/max_user_instances
echo 32768 | sudo tee -a /proc/sys/fs/inotify/max_queued_events
echo 65536 | sudo tee -a /proc/sys/fs/inotify/max_user_watches
watchman shutdown-server

Этот помог мне.

Кроме того, еще один способ сделать скрипт в package.json.

"scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "test": "jest",
    "flow": "flow",
    "flow-stop": "flow stop",
    "watch-need-help": "echo 256 | sudo tee -a /proc/sys/fs/inotify/max_user_instances && echo 32768 | sudo tee -a /proc/sys/fs/inotify/max_queued_events && echo 65536 | sudo tee -a /proc/sys/fs/inotify/max_user_watches && watchman shutdown-server"
  },

Выполните следующую команду в Терминале в каталоге проекта

npm run watch-need-help

Автор: FrozenICE Размещён: 05.08.2019 03:56

0 плюса

4934 Репутация автора

Решение

Решение

Добавление "content_hash_max_items": 500000в мой .watchmanconfigрешил это для меня.

Объяснение:

Похоже, вам нужно настроить размер кэша метаданных для вашей рабочей нагрузки; эта ошибка возникает, когда сторож пытается вставить больше записей кэша, чем настроено.

Вы можете указать большие значения в вашем .watchmanconfigфайле:

  • content_hash_max_itemsсвязан с content.sha1hexметаданными и по умолчанию 131072. Схожим вариантом является то, content_hash_max_warm_per_settleчто по умолчанию 1024и которое приводит к тому, что до этого множества предметов будет оцениваться до этого количества предметов.
  • symlink_target_max_itemsпо умолчанию 32768. Этот кеш используется для readlinkслучаев, когда запросы запрашивают цель символической ссылки. Это менее вероятно, будет вашей проблемой.

Я бы предложил запустить, find /Users/coolman/project/react-native-app | wc -lчтобы получить верхнюю границу для количества файлов в вашем проекте и использовать ее для определения размера этих кешей; если у вас есть больше файлов, чем эти значения по умолчанию, вы должны соответственно увеличить эти параметры кэша.

Я не рекомендую изменять fsevents_latencyпараметр по умолчанию; Можете ли вы рассказать больше о том, что привело вас к его изменению?

Github

Автор: Ashley Coolman Размещён: 11.08.2019 07:28
Вопросы из категории :
32x32