2009-03-14 1 views
4

Gibt es irgendwelche Einstellungen in apache2/dav_svn/ssl/subversion auf dem Server, die die gesamte Leistung auf großen Kassen verbessern (oder zumindest nicht den gesamten Speicher verbrauchen)?riesige Svn Checkout gemacht Apache (dav_svn) verbrauchen alle Speicher auf dem Server - irgendwelche Tipps?

Ich bin besonders an Vorschlägen interessiert, wie man den Speicherverbrauch niedrig hält.

Grund für diese Frage:

Letzte Woche haben wir ein Problem mit unserem SVN-Server hatte - es mehr auf alle Anforderungen reagieren, und der Administrator informiert uns, dass alle Speicher von Apache genommen worden war. Wir greifen auf unsere Subversion-Repositories über SSL mit mod_dav auf Apache.

Die Ursache des Speichermangels war einer meiner Kollegen, die einen großen Checkout von ~ 2,5GB durchführten, der einige Dateien enthalten könnte, die mehr als 500 MB groß waren. Ich habe gehört, dass er es mehrmals versucht hat, vielleicht blieben ein paar Prozesse auf dem Server hängen.

Der Serveradministrator sagte, dass Sie solche großen Dateien nicht in Subversion speichern sollten, aber ich stimme dem nicht zu - wenn sie für das Projekt essentiell sind, würde ich sie immer im Repository haben wollen.

+0

Was sind die SVN- und Apache-Versionen? –

+0

Apache2 - kenne die SVN-Version nicht. Ich werde nächste Woche nachsehen. –

Antwort

2

Dies ist ein gut bekanntes Problem mit SVN/Apache/SSL

ein paar Abhilfen gibt, aber es scheint, dass es im Moment keine 100% fix ist. Lesen Sie this issue für weitere Informationen.

Einige vorgeschlagene Abhilfen:

  • Verwenden VisualSVN Server 1.6.3 (win32, Nicht-SSL und mit SSL)
  • nicht verwenden SSL
  • Verwendung SSLSessionCache shm: key Richtlinie
  • Verwendung passende svnclient und Server
  • [..]
+0

Danke, ich werde mich darum kümmern. –

0

"Perform besser" und "weniger Speicher verbrauchen" sind in vielen Fällen inkompatibel.

Normalerweise wird Leistung erzielt, wenn mehr Speicher verwendet wird (z. B. Caching). Also, während ich verstehe, dass Ihre Frage darin besteht, wie Sie den Speicherverbrauch gering halten können, sollten Sie sich bewusst sein, dass SVN langsamer sein wird.

Der Server-Admin-Typ hatte Recht, große (sind sie binäre?) Dateien in SVN zu halten. SVN ist meistens für Quellcode - kleine Textdateien. Wenn Sie irgendwo eine Version der zugehörigen Daten, Eingabe, Testdaten, Ressourcen, Abhängigkeiten von Drittanbietern usw. benötigen, empfehle ich Ihnen, ein binäres Repository an einem freigegebenen Speicherort zu erstellen und die Verzeichnisstruktur und möglicherweise symbolische Links zu verwenden, um die Versionierung widerzuspiegeln existiert in Ihrem Svn Repo.

Es gibt echte Vorteile, Ihren SVN so schlank wie möglich zu halten (aber nicht schlanker!). SVN ist notorisch langsam beim Auschecken, aufgrund seines Designs (es ist eine sehr schwere Operation im Vergleich zu beispielsweise Verzweigung, die sehr billig ist). Schnellere Auscheckzeiten und Fehler usw. führen zu schnelleren Entwicklungszyklen. Es lohnt sich also, ein Nicht-Code-Repository auf einer gesicherten Netzwerkfreigabe "manuell" zu verwalten, anstatt alles in svn zu behalten.

Denken Sie auch daran, dass Sie nicht wirklich alles Sie in Svn setzen können. Du legst die Plattform SDK nicht dort an, richtig? Wenn Sie also ein externes Repository verwenden, können Sie eine vollständigere Lösung anbieten, indem Sie sogar mehr Zeug dort setzen können.

Zu einem nicht verwandten Hinweis: die billigste Lösung ist wahrscheinlich nur mehr RAM hinzuzufügen. Ich habe tatsächlich mit "RAM-Disk" basierten SVN-Repository-Lösungen experimentiert und sie sind blitzschnell.

+0

Danke für Ihre Antwort. Obwohl ich zustimme, dass ein kleineres SVN besser ist, ist es für mich nicht wert, Daten zu speichern, die an anderer Stelle versioniert werden sollen. Vor allem, weil dies eine Einladung an die Leute wäre, die Versionskontrolle überhaupt nicht mehr zu benutzen. –

+0

Aber du bist immer noch 3rd-Party-Code in einem separaten Ort zu speichern, die Sie gerade tun es nicht in einer organisierten Art und Weise, sondern in einer impliziten (und damit problematischen Art und Weise). z.B. Das JDK, Platform SDK, STL-Implementierung, etc. Ich denke, wenn Sie klare Regeln haben, was gehört/nicht gehören in Svn wäre es gut. –

+0

Ich bin damit einverstanden wäre, wenn dies über 3rd-Party-Code/Daten ist - aber das ist in-house erstellt Sachen, möglicherweise durch mehrere Entwickler geändert wird, muss es Versionskontrolle. Wenn wir es an einen anderen Ort verlagern, bauen wir unser eigenes Versionskontrollsystem auf, ich würde lieber meine Zeit mit etwas anderem verbringen. –