Estou gerenciando um aplicativo hospedado pelo servidor a quem os usuários enfrentam um erro que diz:
java.lang.OutOfMemoryError: Unable to create new native thread
Eu pesquisei sobre isso e descobri que pode ser um problema não ter encadeamentos contra o solicitado, mas descobri que o servidor não tem nenhum problema com isso, conforme aparece no estado da memória e no estado da CPU conectados da seguinte forma:
free -m #Memory status
total used free shared buffers cached
Mem: 10103 2946 7156 0 25 88
-/+ buffers/cache: 2832 7270
Swap: 1906 26 1880
# df -h #Disk status
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 217G 172G 34G 84% /
udev 5.0G 4.0K 5.0G 1% /dev
tmpfs 2.0G 264K 2.0G 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 5.0G 0 5.0G 0% /run/shm
/dev/sda1 189M 33M 146M 19% /boot
E esta é a informação do estado do processador:
# ps aux | wc -l #Number of Running Processes
92
# ulimit -a | grep "max user" #Maximum allowed Users Processes
max user processes (-u) 80711
# ps axms | wc -l #Number of Running Threads
376
# cat /proc/sys/kernel/threads-max #Maximum allowed Number of Threads
161422
Esta é a saída TOP mostrando que o serviço Java está usando 3G como memória virtual e 2.5G como tamanho de residente: