Recientemente actualicé de Mavericks a Yosemite ... se produjeron dolores de cabeza
Estoy bastante seguro de que mi problema radica en la cantidad de archivos que puedo abrir , pero no estoy seguro de cómo resolverlo . También estoy bastante seguro de que he leído todos los artículos / consejos sobre cómo crear el /etc/sysctl.conf
archivo y el /etc/launchd.conf
archivo
En aras de la claridad, así es como se ven actualmente ambos nb (ni siquiera estoy seguro de si estos son los comandos correctos para ponerlos más: he intentado casi todo y cada combinación, es decir: valores más altos, valores más bajos , eliminar comandos, agregar comandos)
/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
También intenté aumentar mis valores de ulimit, tanto global como localmente para mi sesión actual ... 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
Ok, aquí es donde inicialmente comenzó mi dolor de cabeza ... Mi DB (percona-server 5.6.21-69.0 instalado a través de homebrew) comenzó a ahogarse y morir, y en mysql-error.log se llenó con el error 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
Aquí es donde inicialmente comencé a tratar de resolver ese problema "subiendo" mi ulimit, maxfiles, maxproc, etc.
Finalmente, frustrado, seguí adelante y volvería a ese tema más tarde. Entonces, estaba intentando sudo gem install nokogiri
una y otra vez que fallaba y escupía este mismo error (muchas repeticiones sobre el error de builder.rb en la construcción de la extensión nativa de la gema, seguido de un montón de stacktraces repetidos Logs Gist
Errores de instalación de nokogiri
He intentado / buscado en Google un montón de enfoques diferentes para resolver este problema (es decir: banderas adicionales, etc.). Lo que es sorprendente, y cuando comencé a pensar que este problema estaba relacionado con el número de archivos / procesos abiertos, fue cuando verifiqué top
mientras se instalaba la gema ... Me sorprendió bastante ver lo que encontré
arriba durante gem install nokogiri
Parece que mi proceso sigue bifurcando, lo que tiene sentido para esta línea ONE en mi imagen anterior (ver "imagen de errores de instalación de nokogiri")
sh: fork: Resource temporarily unavailable
¿Así que estoy un poco sin ideas, pero ya no estoy seguro de cómo depurar el número de archivos?
ACTUALIZAR
Bueno, logré instalar nokogiri. Desafortunadamente, no estoy exactamente seguro de qué lo solucionó b / c. He intentado tantas cosas. Pero creo que tuvo que lidiar con la reinstalación de ruby. Sin embargo, sigo teniendo el mismo problema con mi base de datos quejándose de que se abren demasiados archivos cuando uso cualquier tipo de base de datos que no es trivialmente pequeña.
fuente
Respuestas:
La modificación de
/etc/launchd.conf
muchas consultas de Google y sugerencias SO no pareció funcionar para mí en Yosemite (10.10). Lo que terminó funcionando, después de numerosas combinaciones de cambio / reinicio / prueba, fue modificar (o crear si no existe) el/etc/sysctl.conf
archivo.Esto es lo que tuve que poner para que funcione
No estoy seguro de si
kern.maxfiles
necesita estar allí, pero cuando lo tuve allí solo seguía teniendo el mismo problema, cuando agreguékern.maxfilesperproc
todo comenzó a funcionar.fuente
sysctl -a | grep kern.maxfiles
.Para ajustar los límites de archivos abiertos en todo el sistema en Mac OS X Yosemite, debe crear dos archivos de configuración. El primero es un archivo de lista de propiedades (también conocido como plist)
/Library/LaunchDaemons/limit.maxfiles.plist
que contiene la siguiente configuración XML:Esto establecerá el límite de archivos abiertos en 65536. El segundo archivo de configuración de plist debe almacenarse
/Library/LaunchDaemons/limit.maxproc.plist
con los siguientes contenidos:Ambos archivos plist deben ser propiedad
root:wheel
y tener permisos-rw-r--r--
. Estos permisos deben estar establecidos de manera predeterminada, pero puede asegurarse de que estén en ejecución ejecutandosudo chmod 644 <filename>
. Si bien los pasos explicados anteriormente harán que los límites de archivos abiertos en todo el sistema se establezcan correctamente al reiniciar, puede aplicarlos manualmente ejecutandolaunchctl limit
.Además de establecer estos límites a nivel del sistema, se recomienda ajustar el nivel de sesión, así añadiendo las siguientes líneas a su
bashrc
,bashprofile
o un archivo análoga:Al igual que los archivos plist, su bashrc o un archivo similar debe tener
-rw-r--r--
permisos. En este punto, puede reiniciar su computadora e ingresar ulimit -n en su terminal. Si su sistema está configurado correctamente, debería ver que maxfiles se ha configurado en 65536.Procedente de: http://docs.basho.com/riak/latest/ops/tuning/open-files-limit/
fuente
Los valores predeterminados en Yosemite parecen ser 12K y 10K:
Sólo el establecimiento
kern.maxfiles
en/etc/sysctl.conf
parece haber resuelto mis problemas./etc/sysctl.conf
archivo:fuente
launchctl limit maxfiles
me dio esto:maxfiles 256 unlimited