JBoss EAP 7, IO-Subsystem-Worker-Konfigurationen

JBoss EAP 7, IO-Subsystem-Worker-Konfigurationen

Ich frage hier, weil ich dazu nicht viele Informationen finden kann …

Was ist der Hauptzweck der Einstellung für „Io-Threads“ und „Max. Anzahl der Task-Threads“ in der Worker-Konfiguration des IO-Subsystems?

Überall, wo ich lese, heißt es, dass die „E/A-Threads“ die Anzahl gleichzeitiger Anfragen angeben, die der Server verarbeiten kann, und dass „Task Max Threads“ die maximale Anzahl gleichzeitiger Anfragen ist, die der Server verarbeiten kann.

Bedeutet dies, dass JBoss 50 Browseranfragen gleichzeitig verarbeiten kann, wenn ich die Anzahl der „E/A-Threads“ auf 50 stelle?

Ich habe eine Site, bei der die Anforderung darin besteht, 1500 gleichzeitige Benutzer innerhalb eines Zeitrahmens von 15 Sekunden bedienen zu können. Und jede Anfrage sollte nicht länger als 3 Sekunden dauern. Dies beinhaltet das Herunterladen der HTML-, JS-, CSS- und aller JPG-Dateien, die der Browser benötigt.

Bedeutet dies, dass ich die „Io-Threads“ auf eine höhere Zahl, etwa 100, und die „Task-Max-Threads“ auf 150 einstellen muss?

Ich habe versucht, „Max. Anzahl der Task-Threads“ auf 150 oder sogar 250 einzustellen, aber das scheint meine Site zu verlangsamen.

Kann jemand erklären, wie diese beiden Einstellungen funktionieren?

Antwort1

Normalerweise benötigen Sie nicht für jede Benutzerverbindung einen separaten IO-Thread. Um Verlangsamungen zu vermeiden, benötigen Sie möglicherweise jedoch jederzeit so viele Task-Threads wie gleichzeitige Benutzer. Sie können die Standardeinstellungen ausprobieren und sehen, ob sie für Ihre Anwendung funktionieren. Lesen Sie diese Support-Artikel:

Beachten Sie, dass EAP 7.2 aus Effizienzgründen über eine zusätzliche Konfiguration für Kernthreads verfügt.

Update: Wenn Sie ausführlichere Anweisungen wünschen, lesen Sie besser die vollständigeLeitfaden zur Leistungsoptimierung der Red Hat Enterprise Application Platform.

Update 2: Da EAP 7 Undertow verwendet, um zu verstehen, was IO und Worker-Threads tun,Unterströmungsdokumentesollte einige Hinweise geben:

Verwaltung von IO- und Worker-Threads

Der XNIO-Worker verwaltet sowohl die IO-Threads als auch einen Threadpool, der für blockierende Aufgaben verwendet werden kann. Im Allgemeinen werden nicht blockierende Handler innerhalb eines IO-Threads ausgeführt, während blockierende Aufgaben wie Servlet-Aufrufe an den Worker-Threadpool weitergeleitet werden.

Antwort2

@IWantSimpleLife, wie @akostadinov in der Dokumentation erwähnte, beschreibt das Design und wie die Arbeit des „blockierenden IO“ von der Arbeit des Handlers getrennt ist. Ich glaube, ich liege richtig, wenn ich sage, dass die „IO-Threads“ und „Task-Max-Threads“ nicht direkt miteinander verbunden sind. Ich sage das, weil sie sich auf zwei separate Thread-Gruppen beziehen. Die erste sind „Worker-IO-Threads“, die die anfängliche Gruppe von IO-bezogenen „Lese-“ und „Schreib“-Handlern beschreiben, die auf Nio-Kanäle und -Ereignisse hören. Idealerweise nur 1 Thread im IO-Pool und dieser mussniemalsBlockierungsverarbeitung (Netzwerk oder Datei) ausführen. DieandereGruppe wird allgemein als "Worker Task Threads"-Gruppe bezeichnet. Diese ist für die Ausführung blockierender Arbeiten vorgesehen. Eine derEinstellungendieser zweiten Gruppe hat die Größe „Task Max Threads“.

verwandte Informationen