Если у вас есть одна программа, в которой выполняется поиск 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?» ,
Этот режим имеет несколько преимуществ по сравнению с редактированием файлов конфигурации, о чем свидетельствуют другие ответы.
- Это изменение одного параметра, который легко отменить.
- Это приводит к сбалансированному набору более высоких пределов, сохраняя гарантии от мошеннических процессов, приводящих к сбою системы.
- В большинстве случаев он предоставляет более высокие ограничения, чем было бы разрешено ядром, даже при редактировании файлов конфигурации.
- Это повышает ограничения по умолчанию для всех процессов без каких-либо дополнительных изменений конфигурации.
- Начиная с OS X 10.11 El Capitan, изменение конфигурации сохраняется в NVRAM, что означает, что, если это вызывает проблемы, вы вернетесь в обычный режим, когда будете предпринимать шаги по устранению неполадок сброса NVRAM. Вы не должны помнить это.
- Поскольку он находится в NVRAM, он не будет случайно изменять состояние при восстановлении из резервных копий.
- Поскольку он находится в NVRAM, он не включится автоматически при клонировании настроек Mac на новое оборудование.
- Поскольку он официально поддерживается Apple, «он просто работает», и вы не будете получать жалобы от Apple Geniuses, что вы неправильно модифицировали систему при обращении за поддержкой.
- Поскольку это изменение одного параметра, вы можете легко включать и выключать его для устранения неполадок или сравнения одного параметра с другим.
Включить или выключить режим производительности сервера
Чтобы включить режим производительности сервера, используйте терминал для запуска одной из следующих команд, а затем перезагрузите компьютер, чтобы он вступил в силу:
- Для OS X 10.11 El Capitan или более поздней версии включите его с помощью
sudo nvram boot-args="serverperfmode=1 $(nvram boot-args 2>/dev/null | cut -f 2-)"
и выключите его
sudo nvram boot-args="$(nvram boot-args 2>/dev/null | sed -e $'s/boot-args\t//;s/serverperfmode=1//')"
Вышеуказанные команды - это то, что Apple официально рекомендует, но на самом деле с ними есть проблема, заключающаяся в том, что если вы дважды запустите команду «включить», то вам придется дважды запустить команду «выключить», чтобы отключить ее. Поэтому проверьте, включен ли он или нет после внесения изменений, запустив
nvram boot-args
Если вывод содержит «serverperfmode = 1», то настройка включена, а если нет, то настройка выключена.
- Для OS X 10.8 Mountain Lion, OS X 10.9 Mavericks и OS X 10.10 Yosemite включите режим производительности сервера с помощью
serverinfo --setperfmode 1
и выключите его
serverinfo --setperfmode 0
Проверьте настройку с помощью
serverinfo --perfmode
Настройка не вступит в силу до перезагрузки системы.
Проверка того, работает ли компьютер в режиме производительности сервера
Проверка настройки покажет вам, будет ли она вступать в силу (или нет) после перезагрузки. Чтобы проверить, активен ли он в данный момент (при условии, что вы следовали моему совету и не редактировали файлы конфигурации, которые меняют настройки), запустите
sysctl kern.maxproc
Это даст вам число, которое является максимальным количеством процессов, которые разрешит система. Если это число кратно 532 , режим производительности сервера отключен. Если это округленное число (кратное 2500), то для работающей в данный момент системы включен режим производительности сервера.