Я установил polipo-1.1.1
кеширующий прокси-сервер на свою OS X 10.11.4 с помощью homebrew
:
brew install polipo --with-large-chunks
Иногда открытие URL-адресов ( например, этой страницы) не удается с этим сообщением об ошибке:
504 Connect to apple.stackexchange.com:80 failed: Too many open files
The following error occurred while trying to access https://apple.stackexchange.com/questions/114514/can-the-default-permissions-on-dev-disk-be-changed:
504 Connect to apple.stackexchange.com:80 failed: Too many open files
Generated Sun, 22 May 2016 12:36:56 IRDT by Polipo on Hamids-MacBook-Pro.local:8123.
Я настроил ~/.polipo
файл как файл конфигурации только с параметрами socksParentProxy
и socksProxyType
.
Значение ulimit -n
равно 4864
.
У /usr/local/var/cache/polipo
меня 510 папок, и общий размер этих папок составляет 297 MB
.
Общее количество файлов, открытых polipo с помощью этой команды 219
:
lsof -p $(pgrep polipo) | wc -l
Почему возникает эта ошибка и как я могу предотвратить это?
Есть ли какие-либо конфигурации, которые я пропустил?
Это быстрый ответ. Если вы знаете, какие конфигурации вызвали эту проблему, напишите свой ответ.
Я не выяснил, почему возникает эта ошибка, но я решаю проблему каждый раз, когда появляется эта ошибка, выполняя эту команду:
$ brew services restart polipo
Stopping `polipo`... (might take a while)
==> Successfully stopped `polipo` (label: homebrew.mxcl.polipo)
==> Successfully started `polipo` (label: homebrew.mxcl.polipo)
После перезапуска polipo
экземпляра эта ошибка исчезает.
ПРИМЕЧАНИЕ. Эту команду следует выполнять ВНЕ сеанса tmux
. В сеансе tmux это не сработает:
$ brew services restart polipo
~/Library/LaunchAgents/homebrew.mxcl.polipo.plist: Operation not permitted
==> Successfully started `polipo` (label: homebrew.mxcl.polipo)
Если вы запускаете такой сеанс, отсоедините сеанс с помощью control+ b(или любой комбинации клавиш префикса, которую вы установили), а затем нажмите d. Теперь запустите эту команду.
ЛУЧШАЯ АЛЬТЕРНАТИВА: раньше я reattach-to-user-namespace
перезапускал службу polipo прямо из сеанса tmux:
$ brew install reattach-to-user-namespace
тогда brew services
будет работать.
ОБНОВЛЕНИЕ: я обнаружил, что размер моего локального кэша polipo достаточно велик:
$ du -d0 -h /usr/local/var/cache/polipo
13.8G /usr/local/var/cache/polipo
Существует функция «очистки», которая объясняется здесь :
Поведение флага -x управляется тремя переменными конфигурации. Переменная diskCacheUnlinkTime указывает время, в течение которого запись на диске должна оставаться неиспользованной, прежде чем ее можно будет удалить; по умолчанию 32 дня.
Итак, я остановил демон polipo с помощью варочных сервисов:
$ brew services stop polipo
$ polipo -x
$ brew services start polipo
Теперь размер локального кеша уменьшен:
$ du -d0 -h /usr/local/var/cache/polipo
2.1G /usr/local/var/cache/polipo
И вроде бы ошибка ушла.