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.
Zellen – Distance: 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.
Schreibe einen Kommentar