ownCloud 7 beschleunigen

In früheren Beiträgen beschrieb ich

Wer meint, sich nach all jener Arbeit zurücklehnen zu können, irrt sich leider: Anhaltende gelegentliche Lastspitzen bis hin zu Instabilität an meinem Server zwangen mich, noch einmal hinzuschauen. Ein Problem war die öffentliche Erreichbarkeit meines MySQL-Servers per TCP/IP, nun unterbunden. Das andere Problem war tatsächlich ownCloud. Seit der Anwendung folgender Maßnahmen läuft mein Server ohne Lastspitzen und recht stabil.

Nicht-benutzte Apps deaktivieren

ownCloud enthält (per App) eine Volltext-Suche, basierend auf Zend Search-Lucene, die momentan Text, HTML und PDF indiziert (MS- und Libre-Office geplant). Diese Github-Issue brachte mich auf den logischen Gedanken, dass eine Volltext-Suche eine Index über sämtlichen unterstützten Datei-Inhalten angelegt und laufend aktualisieren muss. Das ist bei den vielen Gigabytes an Dateien, die ich per ownCloud verwalte, eine wahrhaft resourcenverschlingende Aufgabe – während der Index-Aktualisierung schoß meine CPU-Last durch den MySQL Daemon von ca. 2% auf knapp 35%. Da ich meine Dateien sehr strukturiert und sprechend genannt verwalte, brauche ich die Volltext-Suche nicht – tatsächlich hatte ich sie nie benutzt.

Schlussendlich habe ich folgende Apps deaktiviert (als Admin einloggen und oben links „Apps“ wählen):

  • Full Text Search
  • First run Wizard
  • Pictures

Cron Job

Siehe die offizielle Doku hier: Defining Background Jobs

Als owncloud Admin: Oben rechts im Menü „Administration“
Herunterscrollen zum Abschnitt „Cron“ und unterstes Radio „Cron“ wählen.
Anschließend als Superuser per SSH eine Datei „owncloud“ in /etc/cron.d ablegen:

# /etc/cron.d/owncloud
# Run ownclouds own cron job every 30 minutes
8,38 * * * * <user> /usr/bin/php5 /var/www/vhosts/<path-to-owncloud>/cron.php > /dev/null 2>&1
bzw.
8,38 * * * * gwinfo /usr/local/php566/bin/php /var/www/vhosts/<path-to-owncloud>/cron.php > /dev/null 2>&1

Den neuen Job manuell testen:
su -c "/usr/local/php566/bin/php /var/www/vhosts/<path-to-owncloud>/cron.php" -s /bin/sh <username>

ACHTUNG: Die „cron.php“ läuft ab ownCloud 8 nicht mit PHP 5.3.

Siehe auch Cron Deadlock-Probleme

config.php manuell anpassen

Neben der aktiven Konfiguration in path-to-owncloud/config/config.php gibt es im gleichen Verzeichnis eine Datei config.sample.php, die sämtliche möglichen Einstellungen auflistet und beschreibt. Das sollten Sie unbedingt durchlesen. Ich selbst habe anhand der Beschreibungen folgende manuelle Ergänzungen meiner config vorgenommen:

  • ‚log_rotate_size‘ => 10485760,    // 10MB
    Standardmäßig auf false, d.h. keine Rotation der Logdatei data/owncloud.log
    Da meine Logdatei auf 80MB angewachsen war, empfand ich Handlungsbedarf.
  • ‚check_for_working_htaccess‘ => false,
    Bei mir sinnlos da ich Nginx verwende.
  • ‚preview_libreoffice_path‘ => ‚/usr/bin/libreoffice‘,
    Ermöglicht echte Vorschaubilder von Office-Dokumenten.
    Sehen Sie hierzu meinen Beitrag Dokumentenbearbeitung in ownCloud 7.

PHP-Beschleuniger

Siehe meine Anleitung sowie mein Hintergrundartikel dazu.

PHP 5.5 enthält bereits den Zend Opcache (wie man ihn aktiviert: hier und hier). Auch wenn viele von uns noch auf Ubuntu 12.04 hocken – d.h. mit PHP 5.3.10 – PHP 5.3 muss man alsbald hinter sich lassen! Es ist beschränkt und ineffizient und hat keinen eingebauten Opcache. ownCloud 8 setzt PHP ab mindestens 5.4, teils sogar 5.5, voraus.

Wer also dafür sorgt, dass er PHP 5.5 hat, kann ganz einfach den Opcache aktivieren. Dazu auch den APCU – APC User Caching, Version >= 4.0.2, das von ownCloud benutzt wird falls vorhanden. Wer nicht gleich aufsteigen kann/will, kann für PHP < 5.5. den herkömmlichen Alternativen PHP Cache APC installieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.