
Soy un desarrollador de software que utiliza principalmente Java en Arch Linux. Recientemente estoy experimentando muchas fallas de recursos, en mi entorno de desarrollo y en el sistema mismo.
Cuando inicio todas las aplicaciones que uso habitualmente, el sistema comienza a arrojar errores, por ejemplo:
En zsh:
mlenz@loki ~/[redacted] (git)-[master] % cd ..
VCS_INFO_detect_git:9: fork failed: resource temporarily unavailable
En Eclipse (mi IDE):
Unhandled event loop exception
unable to create new native thread
En Wildfly (el servidor de aplicaciones que utilizamos para el proyecto actual) durante el inicio:
13:19:54,962 ERROR [org.xnio.listener] (XNIO-1 I/O-2) XNIO001007: A channel event listener threw an exception: java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:714)
...
Sospeché algunos ulimit
problemas, ya sea con el límite nproc
o nofile
, pero logré establecerlos en algunos valores inusualmente grandes sin que se solucionara el problema:
mlenz@loki ~ % 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
-m: resident set size (kbytes) unlimited
-u: processes 256106
-n: file descriptors 65535
-l: locked-in-memory size (kbytes) 1024
-v: address space (kbytes) unlimited
-x: file locks unlimited
-i: pending signals 63787
-q: bytes in POSIX msg queues 819200
-e: max nice 0
-r: max rt priority 0
-N 15: unlimited
También descubrí que el problema puede ser un límite de recursos del kernel en todo el sistema, por ejemplo, la cantidad de identificadores de archivos, aunque /proc/sys/fs/file-nr
dice lo contrario:
mlenz@loki ~ % cat /proc/sys/fs/file-nr
13312 0 1629104
Nuestro administrador de sistemas lo comprobó lsof
y pensó que el número de líneas parecía extremadamente alto, pero también revisé la computadora de otro colega y tenía un número similar de líneas allí:
mlenz@loki ~ % lsof | wc -l
228787
Mi entorno de desarrollo es bastante inusual, ya que normalmente inicio 2 servidores de aplicaciones Wildfly (uno es una especie de muñeco para un sistema externo, mientras que el otro se usa para nuestra aplicación). El problema parece ocurrir sólo cuando inicio ambos servidores de aplicaciones, junto con algunas de las otras aplicaciones que uso en mi computadora. Hay muchos servicios ejecutándose en mi sistema, por lo que es posible que tenga que aumentar algún límite que alcance el sistema, pero no tengo la menor idea de cuál podría ser.
¿Alguna idea de lo que me podría faltar o de lo que puedo comprobar para ver qué está mal?