JAX 2007: Tomcat und Apache in der Produktion (Peter Roßbach)

Verbindung HTTP + TC. http://tomcat.objektpark.org/index.html ProxyLoadBalancer Apache httpd – ist am Browser-bug-resistentesten.
Analyse mit Live HTTP Headers

Catalina Architecture: Non Blocking IO Handler. ThreadHandler von Session separat.

APR für NB
Z.B. 10.000 gleichzeitige Verbindungen auf derselben Box. Viele Verbindungen, die aber nicht alle gleichzeitig aktiv sind.

Tomcat-Pipeline intern: Datenströme werden "mundgerecht" zerlegt in Objektrepräsentationen.
Was, wenn ein Server nicht mehr ausreicht?

mod_jk -Konzept. Über httpd analysiert und an via Apache Java Protocol verbundene Tomcat-Instanzen. "Sauschnell" – stehende TCP/IP-Verbindungen, wie RPC.

jserv -Protokoll: Senden von Kommandos und Datenblöcken statt Stream mit Header und Body. Einziges Problem: 8k-Header-Beschränkung bei SSL-Verbindungen. Kann aber vergrößert werden, zu Lasten des allgemeinen Speicherverbrauchs.
2-Byte-Kodierung mit Header-Strings. 30%-40% Perfomancegewinn iVglz http_proxy.
mod_jk-Konfiguration

JKWorkerProperty (ies) setzen:

worker.list=loadbalancer,jkstatus
~node01.port=8009/host=lch/type=ajp13
~loadbalancer.type=lb
~.balance_workers=node01
worker.jkstatus.type=status
JkMount /jkstatus status
JkMount /myapps* loadbalancer

server.xml:
jvmRoute="node01"
protocol="AJP/1.3"

AJP im Einsatz

Real Connect: CPING-Paket hin, CPONG zurück
Request: RQ Header
Response: Nur wenn Requests beendet sind.
LogLevel Trace

Template
einmalige Konfiguration, auf die für viele Instanzen referenziert werden kann.

Timeouts
socket_timeout, connection_pool_~, connect_~, prepost_~, reply_~

Recovery +4 Recovery-mode: connection close after ERROR
3 – Lieblingsmodus von P.R.

Zähler-Methoden : Requests, Sessions (PR für statusbehaftete), Busy (kleinste Anzahl von Anfragen, von PR für statuslose Sessions), Traffic (kleinster r+w Traffic); nur Requests, die keine JSessionId erhalten haben.

LB-Algorithmus (PSEUDO-CODE)
DEF service
FIND <worker that handles request>
CALL_get_most_suitable_worker
IF EXISTS <worker candidate>
FIND <worker_endpoint>
IF EXIST <worker_endpoint>
SET WORKER.ATTR.state_busy
SET ATTR.lbvalue
IF LB.ATTR

[###von Folie holen!###]
Weiter mit FIND MOST SUITABLE Algorithmus
Weiter mit FIND BEST Algorithmen
Retries

Loadbalancer oder Worker

jk_status : Für Analyse zur Ermittlung des geeigneten LoadBalancers.
mo_jk State – Recoverable, Force Recoverable. JKRequestLogFormat – dezidierte Analysen.
Location Mapping. Eine Maschine liefert statischen Content aus. Loadbalancer immer nutzen, schon wegen jk_status.

Empfohlene Mindestkonfiguration: Zwei Rechner mit je zwei Instanzen (stabiler und updatefähig.).

Hot Standby -
Routing – Konfiguration: Szenario "Monatschabschlussbericht."reportlb zustandslos einrichten
Cluster-Session State – über Domainen hinweg. Nodes bleiben nicht gleich. State auf anderen Rechner auslagern.
ZellenDistance: Auch zum Trennen unterschiedlicher Standorte weltweit.
Virtual Server via Direct Routing. LoadBalancer ändert Rückroute IPVS wird dadurch nicht zum Flaschenhals.
Tomcat APR Connector: Direkter OpenSSL-Support in Tomcat. Senden statischer Ressourcen mit OS sendfile (*ix); Viele KeepAlive – Verbindungskonstrukte jetzt möglich (z.B. für AJAX)IOPointer wird Poller zugewiesen.

ApacheBench – TestClient

IO ist derzeit der Performanceblocker, CPU nicht mehr. Größte Installation mit 80 Tomcat-Instanzen auf 30-40-Maschinen.

 


  1. Keine Kommentare