Diese Dokumentation wurde zur Beschreibung der Serie 1.7.x von Apache™ Subversion® erstellt. Falls Sie eine unterschiedliche Version von Subversion einsetzen, sei Ihnen dringend angeraten, bei http://www.svnbook.com/ vorbeizuschauen und stattdessen die zu Ihrer Version von Subversion passende Version dieser Dokumentation heranzzuiehen.
Ein Teil der gebührenden Fleißarbeit bei der Bereitstellung eines Dienstes, wie etwa eines Subversion Servers, umfasst die Planung des Leistungsvermögens und der Leistungsverbesserung. Subversion neigt nicht dazu, besonders ressourcenhungrig hinsichtlich CPU- und Speicherverbrauch zu sein, doch kann jeder Dienst Nutzen aus Optimierungen ziehen, insbesonders, wenn die Nutzung des Dienstes in die Höhe schnellt[62]. In diesem Abschnitt erörtern wir einige Maßnahmen, wie Sie Ihre Subversion Server-Konfiguration dergestalt anpassen können, dass eine noch bessere Leistung und Erweiterbarkeit verfügbar ist.
Im Allgemeinen ist der teuerste Teil der Arbeit eines Subversion Servers das Abrufen von Daten aus dem Projektarchiv. Subversion 1.6 versuchte, diese Kosten durch die Einführung einer Pufferung bestimmter aus dem Projektarchiv gelesener Datenklassen im Speicher auszugleichen. Subversion 1.7 geht hier jedoch weiter, indem nicht nur die Ergebnisse der kostenintensiveren Operationen gepuffert werden, sondern außerdem in jedem der verfügbaren Server die Werkzeuge zur Feinjustierung der Größe und einiger Verhaltensweisen des Puffers zur Verfügung gestellt wird.
Für svnserve können Sie die Puffergröße
mit der Kommendozeilenoption
--memory-cache-size
(-M
)
angeben. Sie können über die boolschen Optionen
--cache-fulltexts
und
--cache-txdeltas
auch vorgeben, ob
svnserve den Volltext bzw. die Deltas von
Inhalten puffern soll.
$ svnserve -d -r /path/to/repositories \ --memory-cache-size 1024 \ --cache-txdeltas yes \ --cache-fulltexts yes … $
mod_dav_svn stellt denselben
Konfigurationsgrad über
httpd.conf
-Direktiven zur Verfügung. Die
Direktiven SVNInMemoryCacheSize
,
SVNCacheFullTexts
und
SVNCacheTextDeltas
können auf der Ebene der
Server-Konfiguration verwendet werden, um die Charakteristik
der Datenpufferung von Subversion zu kontrollieren.
<IfModule dav_svn_module> # Einen 1 Gb Subversion Datenpuffer sowohl für Volltext als auch Deltas bereitstellen. SVNInMemoryCacheSize 1048576 SVNCacheTextDeltas On SVNCacheFullTexts On </IfModule>
Also, welche Einstellungen sollten Sie verwenden?
Natürlich müssen Sie die auf Ihrem Server zur Verfügung
stehenden Ressourcen berücksichtigen. Um überhaupt einen
Vorteil aus der Pufferung ziehen zu können, sollten Sie den
Puffer mindestens so groß lassen, dass er alle Dateien, auf
die am häufigsten zugegriffen wird, aufnehmen kann (z.B. den
trunk
-Dateibaum Ihres Projektes).
Tipp | |
---|---|
Wenn Sie die Größe des Puffers im Speicher auf
|
Anmerkung | |
---|---|
Momentan verwenden lediglich Projektarchive, die das FSFS-Backend benutzen, diese Funktionalität der Datenpufferung. |
Die Komprimierung von Daten, die über Draht übertragen
werden, kann den Umfang dieser Netzübertragungen erheblich
verringern, geht allerdings auf Kosten der CPU-Leistung des
Servers (und Clients). Abhängig von der CPU-Kapazität Ihres
Servers, den typischen Zugriffsmustern der Clients, die Ihren
Server in Anspruch nehmen und der Bandbreite der dazwischen
liegenden Netzwerke möchten Sie vielleicht einstellen, welchen
Aufwand Ihr Server betreiben soll, um die Daten vor dem
Versand zu komprimieren. Um Sie bei dieser Feineinstellung zu
unterstützen, bietet Subversion 1.7 für
svnserve die Option
--compression
(-c
) und die
Direktive SVNCompressionLevel
für
mod_dav_svn. Beide akzeptieren einen Wert,
der eine Ganzzahl zwischen 0 und 9 (einschließlich) ist, wobei
9 die beste Komprimierung der Daten bietet und 0 die
Kompression vollständig unterbindet.
In einem lokalen Netzwerk (LAN) mit 1-Gigabit-Verbindungen mag es beispielsweise keinen Sinn ergeben, den Server die Übertragungen zu komprimieren (was auch die Clients dazu zwingt, sie zu entkomprimieren), da das Netz bereits so schnell ist, dass die Anwender von einer verkleinerten Nutzlast nicht profitieren würden. Andererseits würden Server, auf die in erster Linie von Clients mit Verbindungen geringer Bandbreite zugegriffen wird, ihren Clients einen großen Gefallen erweisen, wenn sie den Gesamtumfang der Netzkommunikation minimieren würden.
[62] Im Fall von Subversion beruht dieser steile Aufstieg natürlich auf dem coolen Namen. Okay, das und seine Beliebtheit, Zuverlässigkeit, Benutzerfreundlichkeit….