mod_jk load balancing
mod_jk bietet vier verschiedene Berechnungs-Methoden zum Verteilen der Last an:
Sind aber die Rechner unterschiedlich stark, so wird man sehr viel Augenmerk auf das manuell zu konfigurierenden Aufteilungsverhaeltnis legen muessen, denn ansonsten passiert es einem leicht dass der langsamere Rechner die Performance (Requests per second) des Gesamtsystems runter zieht.
Annahme: Server A schafft 10 req/s und Server B 4 req/s. Dann erreicht man mit einem Load Balancer, welcher die Requests (defaultmaessig) im Verhaeltnis 1:1 verteilt bloss 8 req/s. Sprich durch Hinzunahme des weiteren Servers B hat man eigentlich eine schlechtere Performance als wenn man nur mit dem Server A arbeitet. Bizarr!
Nur wenn man den Load Balancer (mod_jk) die Requests im Verhaeltnis 5:2 aufteilen laesst, gelangt man in die Naehe der theoretischen 14 req/s. In der Praxis liegt man dennoch idR darunter.
Smarter waere statt einem Request-basierten Mechanismus eben ein "Busyness-Mechanismus", welcher selbstaendig beruecksichtigt welcher Server wie schnell mit einem Request fertig wird (so wie es mod_jk eigentlich auch anbieten sollte; siehe die mod_jk-Doku). Aber mit diesem konnte ich bis dato einfach in den Benchmark-Tests keine Verbesserung gegenueber den austarierten Request-basierten Mechanismus erzielen. Keine Ahnung wieso.
Die Quintessenz ist jedenfalls: In einem Web-Cluster-Setup sollte man stets gleichstarke Rechner vereinen, denn dann erspart man sich die ganze Rechnerei von vornherein.
- Request
- Session
- Traffic
- Busyness
Sind aber die Rechner unterschiedlich stark, so wird man sehr viel Augenmerk auf das manuell zu konfigurierenden Aufteilungsverhaeltnis legen muessen, denn ansonsten passiert es einem leicht dass der langsamere Rechner die Performance (Requests per second) des Gesamtsystems runter zieht.
Annahme: Server A schafft 10 req/s und Server B 4 req/s. Dann erreicht man mit einem Load Balancer, welcher die Requests (defaultmaessig) im Verhaeltnis 1:1 verteilt bloss 8 req/s. Sprich durch Hinzunahme des weiteren Servers B hat man eigentlich eine schlechtere Performance als wenn man nur mit dem Server A arbeitet. Bizarr!
Nur wenn man den Load Balancer (mod_jk) die Requests im Verhaeltnis 5:2 aufteilen laesst, gelangt man in die Naehe der theoretischen 14 req/s. In der Praxis liegt man dennoch idR darunter.
Smarter waere statt einem Request-basierten Mechanismus eben ein "Busyness-Mechanismus", welcher selbstaendig beruecksichtigt welcher Server wie schnell mit einem Request fertig wird (so wie es mod_jk eigentlich auch anbieten sollte; siehe die mod_jk-Doku). Aber mit diesem konnte ich bis dato einfach in den Benchmark-Tests keine Verbesserung gegenueber den austarierten Request-basierten Mechanismus erzielen. Keine Ahnung wieso.
Die Quintessenz ist jedenfalls: In einem Web-Cluster-Setup sollte man stets gleichstarke Rechner vereinen, denn dann erspart man sich die ganze Rechnerei von vornherein.
michi - 10.Oct 2007 10:28 - technisches