Verbessern Sie den Durchsatz der Anwendung, indem Sie die Anforderungsverarbeitung an einen separaten Thread-Pool delegiJava

Java-Forum
Anonymous
 Verbessern Sie den Durchsatz der Anwendung, indem Sie die Anforderungsverarbeitung an einen separaten Thread-Pool delegi

Post by Anonymous »

Ich möchte herausfinden, ob der folgende Ansatz sinnvoll ist oder ein anderer Ansatz besser wäre.
Wir haben eine Anwendung, die auf Java + Netty basiert. Die Anwendung ist latenzempfindlich. Netty-Konfiguration:
  • 1 Boss-Thread + 96 Worker-Threads
  • Insgesamt hergestellte Netty-Kanalverbindungen: ~5K+
Wenn eine Anfrage eintrifft, kümmert sich ein Netty-Worker-Thread um die Channel-Pipeline-E/A (Lesen vom Kanal, Schreiben in den Kanal, Lebenszyklus des Kanals) + Anfrageverarbeitung.
Hier erfolgt die Anfrageverarbeitung nur im Speicher, nicht im Netzwerk Es sind E/A- oder beliebige DB-Aufrufe beteiligt. Es handelt sich um eine CPU-intensive Aufgabe. Da die Anforderungsverarbeitung auch vom Arbeitsthread eines bestimmten Kanals abgewickelt wird, werden andere Kanalanforderungen zur Verarbeitung in die Warteschlange gestellt (korrigieren Sie mich, wenn ich hier falsch liege).
Wir möchten den Durchsatz der Anwendung verbessern. Um dieses Problem zu umgehen, möchten wir die Logik des Anforderungsverarbeitungshandlers an einen separaten Executor-Dienst delegieren (der Executor-Dienst ist ein globaler Thread-Pool für alle Arbeitsthreads). Bei diesem Ansatz muss der Arbeitsthread nicht auf den Abschluss der Anforderungsverarbeitung warten, sondern delegiert die Anforderung einfach an den Thread-Pool und fährt schneller mit dem nächsten Satz von Anforderungen in der Warteschlange fort.
Was sollte ich als nächstes beachten?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post