Überblick

EJServer verwendet zwei unterschiedliche Threadpools für die serverseitigen Aufgaben:

  • Lesen und Bearbeiten von Clientanfragen
  • Senden von Serverantworten
Wenn nicht abweichend angegeben startet EJServer mit
  • vier Prozessen zum Lesen und Bearbeiten von Clientanfragen
  • zwei Prozessen zum Senden von Serverantworten
Insgesamt lediglich sechs Prozesse für einen Netzwerkserver mag sich im ersten Moment wenig anhören, ist jedoch oftmals eine mehr als ausreichende Anzahl von Prozessen. Welche Werte jedoch den optimalen Durchsatz und die ideale Hardwareauslastung bewirken, ist von Hardware zu Hardware und Plattform zu Plattform unterschiedlich. Grundsätzlich gilt, nach den Erkenntnissen diverser Testszenarien, folgende Faustregel:

Ein Verhältnis von 2/1 zwischen Prozessen zum Lesen und Bearbeiten von Clientanfragen und Prozessen zum Senden von Serverantworten bietet durchschnittlich das ausgeglichenste Serververhalten.

Der jeweilige Threadpool kann über die Methode setMaxReadProcessors bzw. setMaxWriteProcessors in EJServer beeinflusst werden:

import de.netseeker.ejoe.EJServer;
...
{
	EJServer server = new EJServer( ... ); 
	//Wie hoch ist die erwartete Anfragelast?
	//Wie sieht es mit den verfügbaren Hardwareressourcen aus? 
	//Wie viele Read/Process-Workerthreads benötigen wir? 
	server.setMaxReadProcessors( Anzahl von Read/Process-Workerthreads );
	//Wie viele Write-Workerthreads benötigen wir? 
 	server.setMaxWriteProcessors( Anzahl von Write-Workerthreads );	
	//starte den Server 
	server.start();
	...
}