# Clients sollen mehrere Sessions starten



## Dragsteal (23. Okt 2008)

Hi,
ich habe da ein Problem. Ich soll ein Programm so ändern, dass z.B. 
3 Clients insgesamt 1000 Sessions (genau die gleichen) gleichzeitig
ausführen.
Ziel dieser Aufgabe ist es den Server soweit auszulasten, bis es zur
Ressourcenknappheit und somit zu Fehlern kommt. Diese Fehler sollen
dann abgefangen werden.

Wie sehen die Ansätze dazu aus?
Hab schon viel im Netz dazu gesucht, bin aber leider nicht fündig
geworden.

MfG
Dragsteal


----------



## Mentor49 (23. Okt 2008)

Ich verstehe das nicht ganz.
Wo liegt genau dein Problem?
1000 Sessions auf 3 Clients zu übergeben?
Weil dann ne Dezimalzahl rauskommt oder was?
Für mich hört sich das übrings sehr nach Flooding an.
Nunja, will keine Vorurteile haben.
Fänds hilfreich und nett wenn du deine Aufgabenstellung/dein Problem noch noch etwas genauer beschreiben könntest.

Lg Chris


----------



## Dragsteal (23. Okt 2008)

Hier ist nochmal die genaue Aufgabenstellung:

"Sie können von den Clients (vielleicht 3 Stationen) insgesamt mal 1000 Sessions starten und beobachten, ob die Verwaltung korrekt läuft. Falls es Ressourcenengpässe gibt, müssen diese per Exeptions sauber abgefangen werden. Das Programm darf nicht abstürzen, selbst wenn 1.000.000 Zugriffe erfolgen. Bei Fehlern muss der Client eine Fehlerinformation bekommen und abgewiesen werden. "

Das Problem ist, dass ich nicht weiß wie ich dem Client sage:"Führe das xxx-mal aus und das alles
gleichzeitig." Der Server soll natürlich auch immer einen Rückgabewert ausgeben, z.B. eine Zahl.

mfg
Dragsteal


----------



## FArt (23. Okt 2008)

Threads.


----------



## Dragsteal (23. Okt 2008)

könnte man dann nicht, um die anzahl festzulegen, den thread in eine for-schleife packen?


----------



## Mentor49 (23. Okt 2008)

> Threads.


Word!

Einfach ne Multisocket Verbindung.
Du Server, 3 verbundene Clients.

Dann fütterst du deinen Server zB mit "start 999 hallo"
Der Server interpretiert das und sendet an jeden Server dann:
"333 hallo"
Damit weiß der Client, ah also in 333 Threads soll ich immer "hallo" ausgeben.
In Javasprache:

```
for (int l = 0; l < wieoft.length; l ++)
		new printit(thestring).start(); /* Hier wird immer ein neuer Thread erstellt, damit gehts halt schneller ;) */
}
```
Also so würd ich es machen...

Lg Chris


----------



## Dragsteal (23. Okt 2008)

hm...so wie ich das jetzt verstanden habe ordnet der Client jetzt die Werte zu.
Es soll aber der Server die Werte zuweisen, auch wenn das länger dauert.
Somit soll nur getestet werden wie er sich bei sehr vielen Anfragen verhält,
damit ggf. Fehler abgefangen werden können.


----------



## Dragsteal (23. Okt 2008)

Ich hab das jetzt wie gewollt hinbekommen.
Danke für die Hilfe 

mfg
Dragsteal


----------



## tuxedo (23. Okt 2008)

> Sie können von den Clients (vielleicht 3 Stationen) insgesamt mal 1000 Sessions starten und beobachten, ob die Verwaltung korrekt läuft. Falls es Ressourcenengpässe gibt, müssen diese per Exeptions sauber abgefangen werden. Das Programm darf nicht abstürzen, selbst wenn 1.000.000 Zugriffe erfolgen. Bei Fehlern muss der Client eine Fehlerinformation bekommen und abgewiesen werden.



Ich schlussfolgere daraus:

Client ist vorhanden, ebenso der Server. D.h. nix experimentell neu erfinden.

Des weiteren:

"Sie können von den Clients (vielleicht 3 Stationen) insgesamt mal 1000 Sessions starten und beobachten, ob die Verwaltung korrekt läuft."

--> Du sollst eine Servermaschine nehmen, 3 Clientmaschinen und auf diesen 3 Clientmaschinen die Clientanwendung rund 1000 mal starten (also rund 333 auf jeder Maschine), und dann schauen wie sich der Server verhält, bzw. wie er mit den Clients zurecht kommt, oder ob er gnadenlos überlastet ist.

Wie du das mit den 1000 Clientinstanzen machst, hängt wohl stark vom Clientprogramm ab und was es machen muss, damit am Server eine Session erzeugt wird (Stichwort: Login? Irgendwelche weitergehenden Userinterfaceaktionen).



Gruß
Alex


----------



## FArt (23. Okt 2008)

... JMeter könnte man hier sinnvoll einsetzen...


----------



## Dragsteal (23. Okt 2008)

Ich hab das jetzt mit Threads gelöst. Der Client stellt nun
insgesamt 333 mal eine Anfrage an den Server.
Der Server gibt auch die entsprechenden Werte aus, jedoch teilweise
durcheinander. 
Vorweg sei noch gesagt, dass der Server die Clients (bzw. die Anfragen ???:L  )
in eine Warteschliefe packt und alle 10Sekunden ausgibt, wie lange der
Client schon wartet. Da ich das mit "sleep" gemacht habe kommt es
wohl bei einer höheren Zahl von Anfragen dazu, dass nicht wirklich alle
Anfragen exat zur gleichen Zeit bearbeitet werden.

Lange rede kurzer Sinn:
Ich muss das wohl nochmal ein wenig überarbeiten


----------



## Dragsteal (24. Okt 2008)

Habs nun endlich hinbekommen^^

Vielen Dank an alle die mir geholfen haben! 

mfg
Dragsteal


----------

