Antes de Mavericks, podía usar el /etc/launchd.conf
archivo para cambiar el consumo máximo de recursos del sistema, por ejemplo:
limit maxfiles 16384 unlimited
limit maxproc 16384 unlimited
Ya no funciona en Mavericks.
¿Cuál es la forma correcta de hacerlo en la versión reciente de OS X?
/etc/sysctl.conf
, no/etc/sysctrl.conf
.sudo serverinfo --setperfmode true
una vez para poner su máquina en "Modo de rendimiento del servidor". Entonces, tiene un "máximo más alto", dependiendo de la configuración de su máquina. Consulte mi publicación en debates.apple.com/thread/5166397 para obtener más detalles. Para 10.10 (Yosemite), el modo está activado de forma predeterminada (¡al menos en mi máquina!). Vea mi respuesta a continuación.Respuestas:
Límite de sesión de shell
Los límites establecidos a través de
ulimit
solo afectan los procesos creados por la sesión de shell actual.root
(el administrador) ejecutando comandos de configuración del sistema o modificando los archivos de configuración del sistema.Después de terminar la sesión de shell (por Ctrl+ D,
exit
o al cerrar laTerminal.app
ventana, etc.), la configuración desaparece. Si desea la misma configuración en la próxima sesión de shell, agregue la configuración al script de inicio de shell.NOTA: Si está utilizando
bash
, entonces debería ser~/.bash_proile
o~/.bash_login
. Si está utilizando otros proyectiles, probablemente debería serlo~/.profile
.Límite del sistema (requiere reiniciar para que surta efecto)
Para 10.9 (Mavericks), 10.10 (Yosemite), 10.11 (El Capitan) y 10.12 (Sierra):Debe crear un archivo en
/Library/LaunchDaemons/limit.maxfiles.plist
(propietario:,root:wheel
modo:)0644
:Debe cambiar los números según sus necesidades. Son el "límite blando" (
Para 10.8 (Mountain Lion):262144
) y el "límite duro" (524288
) respectivamente. Para obtener más información, consulte la página del manual ejecutandoman launchd.plist
.Puede agregar las siguientes líneas a
/etc/sysctl.conf
(propietario:,root:wheel
modo:)0644
:Debe cambiar los números según sus necesidades. Son el "límite de todo el sistema" (
Para Mac OS X anterior (supongo que funciona en 10.7 (Lion) o antes):kern.maxfiles
) y el "límite por proceso" (kern.maxfilesperproc
) respectivamente. Para obtener más configuraciones, consulte la página del manual ejecutandoman sysctl
o lea el código fuente en/usr/include/sys/sysctl.h
.Puede agregar la siguiente línea a
/etc/launchd.conf
(propietario:,root:wheel
modo:)0644
:Debe cambiar los números según sus necesidades. Son el "límite blando" (
Si el sistema no le permite establecer los límites por encima de un cierto valor ...262144
) y el "límite duro" (524288
) respectivamente.El sistema no le permite establecer un valor superior a un "máximo duro" (propuesto por Apple). Para aumentar este "máximo duro", debe comprar "OS X Server" en "App Store", luego debe ejecutar el siguiente comando una vez:
Esto activa el "modo de rendimiento del servidor" en su máquina. Luego puede establecer el máximo de acuerdo con la configuración de su máquina (consulte esto) . Lo intenté antes (en Mountain and Mavericks) y funciona. Por favor, vea mi publicación ( aquí ) para más información.
Referencias
fuente
/etc/launchd.conf
enfoque muestra algún efecto cuando corroulimit -n
. ¿Podría alguien actualizar las instrucciones si esto es significativo?/etc/sysctl.conf
: superuser.com/questions/827984/…Parece que crear el archivo
/etc/launchd.conf
y poner su comando dentro de él debería ser el truco.Si no funciona, probablemente pueda editar o crear el
/etc/rc.local
archivo y agregar su comando dentro de él, ya que hay pocas posibilidades de que Apple elimine la compatibilidad con el límite en la línea de comando.Edición 1 :
debería haber comenzado con eso, la
launchd
página del manual hace referencia a los siguientes archivos:Mi apuesta es que ahora necesitas poner tu comando ya sea dentro
~/Library/LaunchAgents
o fuera/Library/LaunchDaemons
.Deberías probar ambos.
Edición 2 :
también tenga en cuenta que launchd necesita un archivo xml y no solo scripts. se ha diseñado una interfaz gráfica de usuario para ayudar en tal tarea, una no libre es Lingon . Quizás existan otros productos gratuitos.
fuente
/etc/launchd.conf
y/etc/rc.local
se ignoran en 10.10 y posteriores, ya que en 10.10 launchd fue rediseñado y SystemStarter fue eliminado.Acabo de agregar estas dos líneas en mis
.bash_profile
trabajos como un encanto
fuente
ulimit -n -H
. En macOS High Sierra estabaunlimited
cambiando el límite "suave" del usuario en.bash_profile
el truco.Límites del sistema
Cambiar los límites en
/etc/launchd.conf
o/etc/rc.local
ya no es compatible con macOS reciente. Ver: Sistemas y tecnología antiguos .En su lugar, debe crear un nuevo agente de lanzamiento .
Aquí está el ejemplo de comando usando el
PlistBuddy
comando (ver:)man PlistBuddy
:Y similar para el
maxproc
límite:Para cargar archivos anteriores, ejecute:
sudo launchctl load /Library/LaunchAgents/com.launchd.*.plist
.Notas:
cat
oPlistBuddy -x -c Print /Library/LaunchAgents/com.launchd.maxfiles.plist
.tail -f /var/log/system.log
.launchd
límites, ejecute:launchctl limit
..plist
archivo se puede colocar en la carpeta del agente por usuario o en todo el sistema (LaunchAgents
). Ver:man launchd
yman launchd.plist
, o esta o aquella respuesta para más detalles.Límites del núcleo
Tenga en cuenta que los límites del sistema Launchd aún están limitados por el núcleo, por lo que no puede establecerlos por encima de los límites reales establecidos en las variables de estado del núcleo (consulte:
man sysctl
para obtener ayuda).Para ver los límites actuales del núcleo, ejecute:
sysctl -a | grep ^kern.max
.Para aumentar el
maxfiles
límite, ejecute:sudo sysctl -w kern.maxfiles=20480
.Para que persistan, utilice un método similar para crear
.plist
archivos de inicio , por ej.Límites de la cáscara
Para los límites de shell, agregue el
ulimit
comando relevante~/.bashrc
o el~/.bash_profile
archivo de inicio para un usuario individual o/etc/bashrc
para todos los usuarios. Consulte: ¿Cómo agregar configuraciones persistentes de shell ulimit en Mac?Líneas sugeridas para agregar:
fuente
maxproc
porque, de manera predeterminada, el límite del núcleo duro de ese parámetro es 1064, lo que significa que establecerlo en 2000 o "ilimitado" en realidad solo lo establece en 1064. Desafortunadamente, el núcleo no aplica esomaxprocperuid < maxproc
, y la configuración que sugiera dejará el sistema conmaxprocperuid=2000
ymaxproc=1064
que es peligroso. Lea más sobre esto aquí .Si tiene un solo programa que está alcanzando un
ulimit
(un límite suave en la cantidad de archivos que puede abrir un solo proceso),ulimit
está bien ajustarlo a un número mayor, especialmente si solo puede poner elulimit
comando en su.bash_profile
. Más allá de eso, aconsejo fuertemente en contra de archivos de edición como/etc/launchd.conf
o/etc/sysctl.conf
o añadir archivos plist bajo/Library/LaunchDaemons/
por varias razones.Los cambios en esos archivos persisten en las copias de seguridad y se transfieren a las nuevas versiones de macOS y las nuevas computadoras cuando se actualiza.
Si esos cambios causan problemas (lo cual es una posibilidad real), debe recordar que realizó los cambios y cuáles son los cambios, y luego vuelva a editar los archivos para deshacerlos. Esto puede suceder años después.
Después de algunos años de actualización, es posible que lo que solía ser un aumento en un límite ahora sea una disminución en un límite. Pero probablemente no lo sabrá porque (a) no recordará que realizó el cambio y (b) no podrá ver los nuevos límites porque los anuló desde el principio.
Una opción mucho mejor
En general, en lugar de ajustar parámetros individuales en el sistema y desequilibrar el sistema (y potencialmente permitir que un solo programa bloquee el sistema al tomar todos los recursos), si los límites predeterminados del sistema son insuficientes para sus necesidades, recomiendo hacerlo. en "Modo de rendimiento del servidor", o al menos intentarlo. Todo lo que necesita para esto es OS X / macOS 10.8 Mountain Lion o posterior y al menos 16 GiB de memoria instalada. Al principio tenía que pagar por esto, pero a partir de OS X 10.8 Mountain Lion, es gratuito y oficialmente compatible con Apple con el sistema operativo estándar.
Activar este modo aumenta drásticamente los límites del sistema, particularmente la cantidad de procesos que puede ejecutar y la cantidad de archivos que puede abrir, a costa de asignar más memoria al núcleo del sistema. Puede leer en detalle lo que cambia el modo de rendimiento del servidor en la respuesta a la pregunta "¿Qué hace serverperfmode = 1 en macOS?" .
Este modo tiene varias ventajas sobre la edición de archivos de configuración como lo sugieren otras respuestas.
Activar o desactivar el modo de rendimiento del servidor
Para activar el Modo de rendimiento del servidor, use la Terminal para ejecutar uno de estos comandos y luego reinicie para que surta efecto:
y apagarlo con
Los comandos anteriores son los que Apple recomienda oficialmente, pero en realidad hay un problema con ellos, y es que si ejecuta el comando "encender" dos veces, entonces debe ejecutar el comando "apagar" dos veces para apagarlo. Por lo tanto, compruebe si está activado o desactivado después de realizar un cambio ejecutando
Si la salida incluye "serverperfmode = 1", entonces la configuración está activada, y si no lo está, entonces la configuración está desactivada.
y apagarlo con
Verifique la configuración con
La configuración no tendrá efecto hasta después de reiniciar el sistema.
Verificando si la computadora se está ejecutando actualmente en modo de rendimiento del servidor
Verificando la configuración le dirá si está configurado para tener efecto (o no) después de reiniciar. Para probar si está actualmente activo (suponiendo que haya seguido mi consejo y no haya editado ningún archivo de configuración que cambie la configuración), ejecute
Le dará un número que es el número máximo de procesos que permitirá el sistema. Si ese número es un múltiplo de 532 , el modo de rendimiento del servidor está desactivado. Si es un número redondo (un múltiplo de 2500), el modo de rendimiento del servidor está activado para el sistema actualmente en ejecución.
fuente