Java : Teste de Carga com Threads no SO

Baseado no post abaixo resolvi criar uma script para abrir uma série de threads dentro do Linux , sendo assim podendo simular o Out of Memory : Cannot Create New Threds.

Post :

http://fajlinux.com.br/appserver/java-lado-do-so-out-of-memory-unable-to-create-new-native-thread/

1) Programa ThreadTest.java :

O programa pedirá um número de threds para serem criadas e será incrementado conforme preenchido com o número informado.

import java.util.Scanner;
public class ThreadTest {
    public static void main(String [] args){
   System.out.println("Digite o numero de threads para ser executadas : ");     
   System.out.println(Thread.currentThread().getName());     
   Scanner in = new Scanner( System.in );
        int threadNumber = in.nextInt();
        for(int i=0; i<threadNumber;i++){
        new Thread("" + i){
        public void run(){
            System.out.println("Thread:" + getName() + "running");
            }
         }.start();
       } 
          
    }
}

Compile o programa :

javac ThreadTest.java 

2) Testes finais :

Baseado no post abaixo criei o script proc.sh para pegar o número de threads abertas no SO.

http://fajlinux.com.br/linux/script-monitorando-processos-abertos-pelo-usuario-no-so/

script proc.sh

#!/bin/bash
threads=" `ps h -Led -o user | sort | uniq -c | sort -n | grep root | awk '{print $1}'`"
processo="`pgrep -fl root | head -n1 | awk '{print $1}'`"


echo $"Numeros de threads criadas pelo usuario JAVA -->  `echo $threads`"
echo ""
echo ""
echo $"Processo que o JAVA esta usando -->  `echo $processo`"
echo ""

ThreadTest.java sendo executado :

ThreadTest.java

Monitorando com o proc.sh :

monitoraThreads

Obs: Os processos são controlados pela JVM / Sistema Operacional , não necessariamente serão iniciados na mesma hora que foram aberto, a idéia desta post é que se tenha como simular um erro de processamento para saber identificar e entender como se trata no SO a abertura de processos / threads.