Webserverprogrammierung: Thread-Beschränkung

Status
Nicht offen für weitere Antworten.

snoop83

Mitglied
Hi!

Ich bin mir nicht ganz sicher, ob das Thema hier rein gehört. Falls nicht, bitte verschieben!

Ich versuche, mich kurz zu fassen! Ich programmiere einen Webserver in Java. Der Server ist bereits lauffähig, Threadbasierend, realisiert mit ServerSocket.

Initialisierung eines Threads im Hauptprozess:
Code:
public class Server implements Runnable {
[...]
	public void run() {
		try {
			while (true) {
				Socket client = serverSocket.accept();
				new Server_instance(client).start();
			}
		} catch (Exception e) { e.printStackTrace(); }
	} // run
[...]
}

Server_instance arbeitet dann die jeweilige Anfrage ab.

Ich habe heute einen Belastungstest durchgeführt: eine Seite mit ca. 80 Bildern parallel von 4 Rechner aus abgefragt. Da mein Server nur ein 400er Pentium mit 128 MB ist, auf dem zusätzlich noch FTP-Server etc. laufen, möchte ich gern, dass der Webserver nur eine bestimmte Anzahl an Anfragen gleichzeitig bearbeitet. Dabei geht es mir um die Beschränkung der gleichzeitigen Festplattenzugriffe.

Habe es in der run()-Methode der Server_instance wie folgt versucht:

Code:
class Server_instance extends Thread {
	public void run() {
		/* solange warten, bis <9 Threads laufend 
		while (this.activeCount()>8) {
			try { Thread.sleep(500); }
			catch ( InterruptedException ie) { }
		}*/
	[...]
[...]
}

Somit wird der Webserver auf maximal 8 Threads gleichzeitig beschränkt. Das funktioniert auch, allerdings nicht mehr! Sind einmal 8 Threads aktiv, so legen diese sich alle immer und immer wieder schlafen. Was natürlich nicht Sinn der Sache ist, da ja nur bei einer Auslastung von 8 Threads keine neuen gestartet werden sollen. So funktioniert es jedenfalls nicht.

Gibt es andere Lösungsvorschläge?

Kann man die Threadanzahl eines Java-Programms irgendwie festlegen? Im Voraus?

Bin für jede Idee zu haben ;)
 

meez

Top Contributor
Sowas solltest du sowieso mit einer Queue lösen...
Schreib alle Requests in eine Queue, und arbeite sie mit x Threads ab..
Ueber die Queue kannst du dann auch den "Füllstand" festlegen...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
OnDemand Thread und Ratelimiter Netzwerkprogrammierung 4
F Thread "extern" beenden Netzwerkprogrammierung 3
OnDemand Linux RAM per Thread Netzwerkprogrammierung 3
V Socket Audio Clip loopen ohne neuen Thread Netzwerkprogrammierung 2
C Thread Netzwerkprogrammierung 9
platofan23 Socket Hilfe mit Socket Thread und ArrayList Netzwerkprogrammierung 6
A RMI RMI - Thread Objekte übertragen und auf anderer Machine weiterlaufen lassen Netzwerkprogrammierung 0
S Socket ThreadPool oder Thread pro Client? Netzwerkprogrammierung 11
T Socket Server starten Thread Problem Netzwerkprogrammierung 12
P Wie spreche ich einen Thread an? Netzwerkprogrammierung 20
M Thread Scheduler Java 5.0? Netzwerkprogrammierung 2
7 Mehrere Verbindungen gleichzeitig in einem Thread mit ApacheHTTP Netzwerkprogrammierung 7
D Socket Dynamische Socket-Thread Erzeugung Netzwerkprogrammierung 2
B Socket Thread handling / Reader init Netzwerkprogrammierung 8
Z Socket Socket-Thread falsch? Netzwerkprogrammierung 5
Helgon Socket Thread Pooling Netzwerkprogrammierung 6
M Was macht Thread, wenn er aus einem "leeren" Inputstream liest ? Netzwerkprogrammierung 5
B callback thread udp Netzwerkprogrammierung 2
D RMI und Thread Netzwerkprogrammierung 4
S Kommunikationsproblem, Thread und manuel Netzwerkprogrammierung 4
U Socket Abhören eines Sockets/Ports in extra Thread Netzwerkprogrammierung 8
K ein Thread pro Stream Netzwerkprogrammierung 2
D Weiterer Thread auf Port 843 horcht Netzwerkprogrammierung 7
D Thread problem Netzwerkprogrammierung 3
S Thread, Daten vom Socket lesen Netzwerkprogrammierung 2
S Thread Transport Netzwerkprogrammierung 6
S Socket Thread in Schleife Netzwerkprogrammierung 4
G Objekte per TCP verschicken + Thread Netzwerkprogrammierung 4
T synchronized mit thread und rückgabe Netzwerkprogrammierung 4
Q Thread und Sockets... Netzwerkprogrammierung 2
2 Class mit ServerSocket erbt von Thread? Netzwerkprogrammierung 3
PAX Outputstream von anderem Thread verwenden lassen Netzwerkprogrammierung 5
C Server mit Multithreading (Thread-Pool) Netzwerkprogrammierung 2
E java.lang.NullPointerException aber nur wenns im Thread läuf Netzwerkprogrammierung 4
F EIN Thread in RMI auf Serverseite Netzwerkprogrammierung 3
G Server Thread beenden Netzwerkprogrammierung 16
T Socket-Thread: Designfrage Netzwerkprogrammierung 14
S Mit Thread arbeitende Maschine Netzwerkprogrammierung 6
T select() ohne NIO - oder wie Worker-Thread sauber beenden? Netzwerkprogrammierung 9
K Selbe Streams mehrfach nutzen (zusätl. Thread) Netzwerkprogrammierung 6
ven000m Thread Frage Netzwerkprogrammierung 11
B Thread.start() (run()) excption Netzwerkprogrammierung 2
M Thread läuft nicht weiter Netzwerkprogrammierung 2
B NullPointerException | Thread Netzwerkprogrammierung 4
U Current thread not owner Netzwerkprogrammierung 3
S readline-thread stoppt vorzeitig Netzwerkprogrammierung 6
J RMI - (RemoteException occurred in server thread) Netzwerkprogrammierung 2
M Exception in thread "main" java.lang.NoClassDefFou Netzwerkprogrammierung 2
F problem mit thread bzw. netzwerkverbindung! Netzwerkprogrammierung 3
L netzwerk mit thread Netzwerkprogrammierung 3
G RMI thread safe ? Netzwerkprogrammierung 11
A Thread gibt Nachrichten mehrmals aus (Messenger in Java) Netzwerkprogrammierung 3

Ähnliche Java Themen


Oben