До Mavericks я мог использовать /etc/launchd.conf
файл для изменения максимального потребления системных ресурсов, например:
limit maxfiles 16384 unlimited
limit maxproc 16384 unlimited
Это больше не работает в Маверикс.
Как правильно сделать это в последней версии OS X?
/etc/sysctl.conf
, нет/etc/sysctrl.conf
.sudo serverinfo --setperfmode true
один раз, чтобы перевести вашу машину в «Режим производительности сервера». Затем у вас есть «более высокий максимум», в зависимости от конфигурации вашего компьютера. Пожалуйста, см. Мой пост на Discussions.apple.com/thread/5166397 для деталей. Для 10.10 (Yosemite) режим включен по умолчанию (по крайней мере, на моей машине!). Смотрите мой ответ ниже.Ответы:
Предел сеанса оболочки
Ограничения, установленные через,
ulimit
влияют только на процессы, созданные текущим сеансом оболочки.root
(администратором) путем выполнения команд конфигурации системы или изменения файлов конфигурации системы.После завершения сеанса оболочки (с помощью Ctrl+ D,
exit
или закрытияTerminal.app
окна и т. Д.) Настройки исчезают. Если вы хотите использовать тот же параметр в следующем сеансе оболочки, добавьте этот параметр в сценарий запуска оболочки.ПРИМЕЧАНИЕ: если вы используете
bash
, то это должно быть~/.bash_proile
или~/.bash_login
. Если вы используете другие оболочки, вероятно, так и должно быть~/.profile
.Системный лимит (требуется перезагрузка для вступления в силу)
Для 10,9 (Маверикс), 10,10 (Йосемити), 10,11 (Эль-Капитан) и 10,12 (Сьерра):Вы должны создать файл в
/Library/LaunchDaemons/limit.maxfiles.plist
(owner:,root:wheel
mode:)0644
:Вы должны изменить номера в соответствии с вашими потребностями. Это «мягкий предел» (
Для 10,8 (Горный лев):262144
) и «жесткий предел» (524288
) соответственно. Для получения дополнительной информации обратитесь к странице справки, запустивman launchd.plist
.Вы можете добавить следующие строки в
/etc/sysctl.conf
(owner:,root:wheel
mode:)0644
:Вы должны изменить номера в соответствии с вашими потребностями. Это «общесистемный лимит» (
Для более старых Mac OS X (я думаю, это работает на 10.7 (Lion) или раньше):kern.maxfiles
) и «лимит на процесс» (kern.maxfilesperproc
) соответственно. Для получения дополнительных настроек обратитесь к странице справочника, запустивman sysctl
или прочитав исходный код по адресу/usr/include/sys/sysctl.h
.Вы можете добавить следующую строку в
/etc/launchd.conf
(owner:,root:wheel
mode:)0644
:Вы должны изменить номера в соответствии с вашими потребностями. Это «мягкий предел» (
Если система не позволяет установить пределы выше определенного значения ...262144
) и «жесткий предел» (524288
) соответственно.Система не позволяет установить значение выше «жесткого максимума» (предложенного Apple). Чтобы увеличить этот «жесткий максимум», вы должны приобрести «OS X Server» в «App Store», а затем выполнить следующую команду один раз:
Это активирует «режим производительности сервера» на вашем компьютере. Затем вы можете установить максимум в соответствии с конфигурацией вашей машины (см. Это) . Я пробовал это раньше (на Горе и Маверикс), и это работает! Пожалуйста, смотрите мой пост ( здесь ) для получения дополнительной информации.
Рекомендации
источник
/etc/launchd.conf
подход показывает какой-либо эффект, когда я бегуulimit -n
. Может ли кто-нибудь обновить инструкции, если это важно?/etc/sysctl.conf
: superuser.com/questions/827984/…Кажется, что создание файла
/etc/launchd.conf
и помещение вашей команды внутри него должно помочь.Если он не работает, вы, вероятно, можете отредактировать или создать
/etc/rc.local
файл и добавить в него свою команду, поскольку маловероятно, что Apple когда-либо удалит поддержку ограничения в командной строке.Редактировать 1 :
я должен начать с этого, справочная
launchd
страница ссылается на следующие файлы:Я держу пари, что теперь вам нужно ввести свою команду либо в,
~/Library/LaunchAgents
либо в/Library/LaunchDaemons
.Вы должны попробовать оба.
Редактировать 2 :
Также имейте в виду, что для launchd нужен файл XML, а не только скрипты. Gui был призван помочь в такой задаче, а несвободным является Lingon . Возможно, существуют другие бесплатные продукты.
источник
/etc/launchd.conf
и/etc/rc.local
игнорируются в 10.10 и позже, так как в 10.10 launchd был переработан, а SystemStarter был удален.Я просто добавил эти две строки в мои
.bash_profile
работы, как шарм
источник
ulimit -n -H
. На macOS High Sierra этоunlimited
так меняло «мягкий» лимит пользователя в своем.bash_profile
деле.Системные ограничения
Изменение ограничений
/etc/launchd.conf
или/etc/rc.local
больше не поддерживается для последних macOS. См .: Старые системы и технологии .Вместо этого вы должны создать новый агент запуска .
Вот пример команды с использованием
PlistBuddy
команды (см .man PlistBuddy
:):И похоже на
maxproc
лимит:Для загрузки файлов выше, запустите:
sudo launchctl load /Library/LaunchAgents/com.launchd.*.plist
.Примечания:
cat
илиPlistBuddy -x -c Print /Library/LaunchAgents/com.launchd.maxfiles.plist
.tail -f /var/log/system.log
.launchd
ограничения, выполните команду:launchctl limit
..plist
Файл может быть помещен в каждом пользователь или папку агента общесистемного (LaunchAgents
). Смотрите:man launchd
и /man launchd.plist
или тот или иной ответ для более подробной информации.Пределы ядра
Обратите внимание, что вышеуказанные системные ограничения Launchd по-прежнему ограничены ядром, поэтому вы не можете установить их выше, чем фактические ограничения, установленные в переменных состояния ядра (см.
man sysctl
Справку).Чтобы увидеть текущие ограничения ядра, выполните команду:
sysctl -a | grep ^kern.max
.Для увеличения
maxfiles
лимита, выполните команду:sudo sysctl -w kern.maxfiles=20480
.Чтобы они сохранялись, используйте аналогичный метод для создания
.plist
файлов запуска , напримерОграничения оболочки
Для ограничений оболочки добавьте соответствующую
ulimit
команду~/.bashrc
или~/.bash_profile
файл запуска для отдельного пользователя или/etc/bashrc
для всех пользователей. Смотрите: Как добавить постоянные параметры оболочки ulimit на Mac?Предлагаемые строки для добавления:
источник
maxproc
потому что по умолчанию ограничение жесткого ядра для этого параметра равно 1064, что означает, что для него установлено значение 2000 или «без ограничений», на самом деле устанавливается только значение 1064. К сожалению, ядро не применяет этоmaxprocperuid < maxproc
, и предлагаемые вами настройки оставят Система сmaxprocperuid=2000
иmaxproc=1064
которая опасна. Подробнее об этом читайте здесь .Если у вас есть одна программа, в которой выполняется поиск
ulimit
(мягкое ограничение на количество файлов, которое может открыть один процесс), подгонкаulimit
к большему числу вполне подойдет, особенно если вы можете просто вставитьulimit
команду в свой файл.bash_profile
. Кроме того, я настоятельно советую против редактирования файлов , такой как/etc/launchd.conf
или/etc/sysctl.conf
или добавление Plist файлов в/Library/LaunchDaemons/
течение нескольких причин.Изменения в этих файлах сохраняются в резервных копиях и переносятся в новые версии macOS и новые компьютеры при обновлении.
Если эти изменения вызывают проблемы (что является реальной возможностью), вы должны помнить, что вы внесли изменения и что это за изменения, а затем повторно отредактировать файлы, чтобы отменить их. Это может случиться годами позже.
После нескольких лет обновления вы можете обнаружить, что то, что раньше было увеличением лимита, теперь является уменьшением лимита. Но вы, вероятно, не будете знать об этом, потому что вы (а) не будете помнить, что вы внесли изменение, и (б) не сможете увидеть новые ограничения, потому что вы отменили их с самого начала.
Гораздо лучший вариант
В общем, вместо того, чтобы настраивать отдельные параметры в системе и выводить систему из равновесия (и, возможно, позволить одной программе привести к сбою системы, забирая все ресурсы), если системные ограничения по умолчанию недостаточны для ваших нужд, я рекомендую ture на «Режим производительности сервера», или, по крайней мере, дать ему попробовать. Все, что вам для этого нужно - это OS X / macOS 10.8 Mountain Lion или более поздней версии и минимум 16 ГБ установленной памяти. Раньше вам приходилось платить за это, но начиная с OS X 10.8 Mountain Lion, она бесплатна и официально поддерживается Apple со стандартной ОС.
Включение этого режима значительно увеличивает системные ограничения, особенно количество процессов, которые вы можете запустить, и количество файлов, которые вы можете открыть, за счет выделения большего количества памяти системному ядру. Вы можете подробно прочитать, что меняется в зависимости от режима работы сервера, в ответе на вопрос «Что на самом деле serverperfmode = 1 делает в macOS?» ,
Этот режим имеет несколько преимуществ по сравнению с редактированием файлов конфигурации, о чем свидетельствуют другие ответы.
Включить или выключить режим производительности сервера
Чтобы включить режим производительности сервера, используйте терминал для запуска одной из следующих команд, а затем перезагрузите компьютер, чтобы он вступил в силу:
и выключите его
Вышеуказанные команды - это то, что Apple официально рекомендует, но на самом деле с ними есть проблема, заключающаяся в том, что если вы дважды запустите команду «включить», то вам придется дважды запустить команду «выключить», чтобы отключить ее. Поэтому проверьте, включен ли он или нет после внесения изменений, запустив
Если вывод содержит «serverperfmode = 1», то настройка включена, а если нет, то настройка выключена.
и выключите его
Проверьте настройку с помощью
Настройка не вступит в силу до перезагрузки системы.
Проверка того, работает ли компьютер в режиме производительности сервера
Проверка настройки покажет вам, будет ли она вступать в силу (или нет) после перезагрузки. Чтобы проверить, активен ли он в данный момент (при условии, что вы следовали моему совету и не редактировали файлы конфигурации, которые меняют настройки), запустите
Это даст вам число, которое является максимальным количеством процессов, которые разрешит система. Если это число кратно 532 , режим производительности сервера отключен. Если это округленное число (кратное 2500), то для работающей в данный момент системы включен режим производительности сервера.
источник