Я недавно перешел с Маверикс на Йосемити .... начались головные боли
Я уверен , что моя проблема лежит ж / количество файлов , я могу открыть - но я не знаю , как ее решить . Я также уверен, что прочитал каждую статью / совет о создании /etc/sysctl.conf
файла и /etc/launchd.conf
файла
Для ясности это то, что они оба в настоящее время выглядят как nb (я даже не уверен, что это правильные команды для их добавления - я пробовал практически все и каждую комбинацию. Т.е.: более высокие значения, более низкие значения , удаление команд, добавление команд)
/etc/launchd.conf
limit maxfiles 16384 32768
limit maxproc 1000 2000
/etc/sysctl.conf
# Turn up maxproc
kern.maxproc=2048
# Turn up the maxproc per user
kern.maxprocperuid=512
Я также попытался увеличить свои значения ulimit - как глобально, так и локально для моей текущей сессии ... no bueno
ulimit -a
-t: cpu time (seconds) unlimited
-f: file size (blocks) unlimited
-d: data seg size (kbytes) unlimited
-s: stack size (kbytes) 8192
-c: core file size (blocks) 0
-v: address space (kbytes) unlimited
-l: locked-in-memory size (kbytes) unlimited
-u: processes 709
-n: file descriptors 4096
Хорошо - это то, где моя головная боль первоначально началась ... Моя БД (percona-сервер 5.6.21-69.0, установленный через homebrew) начала задыхаться и умирать, и в mysql-error.log она была заполнена ошибкой too many files open
.
2014-10-21 15:19:50 5190 [ERROR] /usr/local/Cellar/percona-server/5.6.21-69.0/bin/mysqld: Can't open file: './ie/tokenorder_products.frm' (errno: 24 - Too many open files)
2014-10-21 15:19:50 5190 [ERROR] /usr/local/Cellar/percona-server/5.6.21-69.0/bin/mysqld: Can't open file: './ie/tokenorders.frm' (errno: 24 - Too many open files)
2014-10-21 15:19:50 5190 [ERROR] /usr/local/Cellar/percona-server/5.6.21-69.0/bin/mysqld: Can't open file: './ie/tsdevices.frm' (errno: 24 - Too many open files)
2014-10-21 15:19:50 5190 [ERROR] /usr/local/Cellar/percona-server/5.6.21-69.0/bin/mysqld: Can't open file: './ie/tsracks.frm' (errno: 24 - Too many open files)
2014-10-21 15:19:50 5190 [ERROR] /usr/local/Cellar/percona-server/5.6.21-69.0/bin/mysqld: Can't open file: './ie/v_classunity_classlist.frm' (errno: 24 - Too many open files)
2014-10-21 15:20:48 5190 [ERROR] Error in accept: Too many open files
Именно здесь я и начал пытаться решить эту проблему, подняв мой ulimit, maxfiles, maxproc и т. Д.
В конце концов - расстроенный, я пошел дальше и вернусь к этому вопросу позже. И тогда я пытался sudo gem install nokogiri
снова и снова, он потерпел бы неудачу и выплюнул ту же самую ошибку (множество повторений о том, что builder.rb не может создать собственное расширение gem - сопровождается кучей повторяющихся стековых трасс Logs Gist
Ошибки установки nokogiri
Я пробовал / гуглил несколько разных подходов для решения этой проблемы (например: дополнительные флаги и т. Д.). Что удивительно - и когда я начал думать, что эта проблема связана с количеством открытых файлов / процессов, это когда я проверял top
во время установки гема ... Я был очень удивлен, увидев то, что нашел
топ во время gem install nokogiri
Похоже, мой процесс продолжает разветвляться, что тогда имело смысл для этой ОДНОЙ строки в моей предыдущей картинке (см. «Nokogiri install errors picture»)
sh: fork: Resource temporarily unavailable
Так что у меня нет идей, но я не совсем уверен, как отладить количество файлов?
ОБНОВИТЬ
Ну, мне удалось установить nokogiri. К сожалению, я не совсем уверен, что это исправить, потому что я много раз пробовал. Но я думаю, что пришлось иметь дело с переустановкой ruby. Тем не менее, я все еще получаю ту же проблему с моей БД, жалуясь на слишком много открытых файлов, когда я использую какую-либо базу данных, которая не является достаточно маленькой.
источник
Ответы:
В
/etc/launchd.conf
Yosemite (10.10) мне кажется, что изменение количества запросов Google и предложений SO для меня не сработало (10.10). После многочисленных комбинаций изменение / перезагрузка / тестирование получилось изменить (или создать, если он не существует)/etc/sysctl.conf
файл.Это то, что я должен был вставить, чтобы это работало
Я не уверен,
kern.maxfiles
нужно ли там быть, но когда он у меня был там сам, у меня все еще была та же проблема, когда я добавил, чтоkern.maxfilesperproc
все начало работать.источник
sysctl -a | grep kern.maxfiles
.Чтобы настроить ограничения открытых файлов в масштабе всей системы в Mac OS X Yosemite, необходимо создать два файла конфигурации. Первый - это файл списка свойств (он же plist), в
/Library/LaunchDaemons/limit.maxfiles.plist
котором содержится следующая конфигурация XML:Это установит ограничение на количество открытых файлов в 65536. Второй файл конфигурации plist должен храниться
/Library/LaunchDaemons/limit.maxproc.plist
со следующим содержимым:Оба файла plist должны принадлежать
root:wheel
и иметь права доступа-rw-r--r--
. Эти разрешения должны быть включены по умолчанию, но вы можете убедиться, что они есть, запустив ихsudo chmod 644 <filename>
. Несмотря на то, что описанные выше шаги приведут к тому, что ограничения на общесистемные открытые файлы будут правильно установлены при перезапуске, вы можете применить их вручную, запустивlaunchctl limit
.В дополнение к установке этих пределов на уровне системы, мы рекомендуем установить на уровне сеанса , а также путем добавления в следующие строки
bashrc
,bashprofile
или аналогичного файла:Как и файлы plist, ваш bashrc или аналогичный файл должны иметь
-rw-r--r--
права доступа. На этом этапе вы можете перезагрузить компьютер и ввести ulimit -n в свой терминал. Если ваша система настроена правильно, вы должны увидеть, что для maxfiles установлено значение 65536.Источник: http://docs.basho.com/riak/latest/ops/tuning/open-files-limit/
источник
По умолчанию на Yosemite, кажется, 12K и 10K:
Только установка
kern.maxfiles
в ,/etc/sysctl.conf
кажется, решил мои проблемы./etc/sysctl.conf
файл:источник
launchctl limit maxfiles
дал мне это:maxfiles 256 unlimited