M
my
Gast
hallo Leute,
Ich habe richtig grosßes Problem: Ich schreibe ein [Stress]Testprogramm welches die Alltags-Benutzung eines Datenbank darstellt. Darin baue ich viele viele Threads, jeder Thread baut eine Verbindung zum Server auf ... führt bestimmte Statements aus ... und schließt die Verbindung wieder (Jeder Thread ist quasi ein Datenbank-Nutzer). Dann protokolliere ich alle Aktionen der Threads (in eine Tabelle) um später das Verhalten der Datenbank zu analysieren. Das Programm soll eine Woche laufen und Protokoldaten sammeln.... leider läuft das Programm nur ca. 2 Stunden und friert dann ein. Ich bin total verzweifelt.
Hier die Hauptattraktion:
BITTE HELFE MIR....ICH BIN EUCH DAFÜR ZUR EWIGEN DANK VERPFLICHTET
Ich habe richtig grosßes Problem: Ich schreibe ein [Stress]Testprogramm welches die Alltags-Benutzung eines Datenbank darstellt. Darin baue ich viele viele Threads, jeder Thread baut eine Verbindung zum Server auf ... führt bestimmte Statements aus ... und schließt die Verbindung wieder (Jeder Thread ist quasi ein Datenbank-Nutzer). Dann protokolliere ich alle Aktionen der Threads (in eine Tabelle) um später das Verhalten der Datenbank zu analysieren. Das Programm soll eine Woche laufen und Protokoldaten sammeln.... leider läuft das Programm nur ca. 2 Stunden und friert dann ein. Ich bin total verzweifelt.
Hier die Hauptattraktion:
Code:
// jeder thread simuliert 1 User
try {
// Anzahl der maximal parallele Threads
int maxThread=20;
// ein Vektor von db. db ist meine Klasse worin ich dynamische die SQL-Statement zusammenbaue, Verbindung auf und abbaue usw...
db mydb[] = new db[maxThread];
// Anzahl der Paralle Threads zufällig erzeugen
Random r = new Random();
int anzThreads=0;
// Wenn ein Thread ins Leben gerufen wird ... registriert er sich bei d. Threadmanager ... wenn er abgearbeitet ist ... dann abmelden
ThreadManager tm = new ThreadManager();
while(true){
anzThreads=r.nextInt(maxThread)+1; // Anzahl der Threads zufällig erzeugen
for(int i=0; i<anzThreads; i++){
mydb[i]= new db(DBMS,tm); // Die Threads initialisieren und auf Start drücken
mydb[i].start();
}
// Wenn aktuelle Anzahl der Threads <= 5 ........ dann wieder stressen mit eine neue "Nutzer Welle"!
while(true){
for(int i=0; i<=1000000; i++){} // Bremsschleife damit die Anzahl der Threads nicht ausartet
if(tm.anzThread()<4){ // Wenn nur noch 4 Threads lebt, dann wird diese Schleife abgebrochen ...
System.out.println("NEW WAVE!!!"); // somit werden wieder neue Threads initialisert und ausgeführt
break;
}
}
}
} catch (Exception e) {
// In dieser Catchblock kommt das Programm bisher nie
System.out.println("Thread error: "+e);
}
BITTE HELFE MIR....ICH BIN EUCH DAFÜR ZUR EWIGEN DANK VERPFLICHTET