Server Tuning¶
Es gibt eine Reihe von Möglichkeiten um die ownCloud Installation besser abzustimmen und daraus ein hohes Leistungsniveau zu erreichen. Die Datenbank, beispielsweise braucht Indizes in den meisten aktiven Tabellen. Die Anzahl der Live-Apache-Verbindungen muss auf bis zu 1000 oder mehr erhöht werden, und die Anzahl der erlaubten MySQL Verbindungen muss gleichfalls erhöht erwerden, um das gleiche zu erreichen. Das Einschalten des alternativen PHP Cache (APC) wird auch Leistungssteigerung auf den App-Server ermöglichen, und es gibt wahrscheinlich eine Reihe von spezifische Konfigurationen die es erforderlich machen, das dazu bestimmten bestimmte Werte bereitgestellt werden.
This chapter gives a few hands-on tips on how to achieve this.
General Linux tuning¶
Übersicht der Systemkonfiguration¶
# cat /etc/sysctl.conf
...
net.core.somaxconn = 4096
net.ipv4.tcp_max_syn_backlog = 2048
...
# ulimit -nH 4096
Stellen Sie sicher, dass Ihre /tmp eine RAM-Diskist, das Session-Handling verbessert die Leistung. Um dies zu tun, fügen Sie das Folgende zur /etc/fstab hinzu:
none /tmp tmpfs,size=6g defaults
Stellen Sie sicher, dass der APC Bytecode Cache installiert ist:
# yum install php-pecl-apc
MySQL ist Temp in der Ramdisk.
Tuning System Parameter¶
Konfiguration für mehrere gleichzeitige Zugriffe.
echo "2048 64512" > /proc/sys/net/ipv4/ip_local_port_range
echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle
echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse
echo "10" > /proc/sys/net/ipv4/tcp_fin_timeout
echo "65536" > /proc/sys/net/core/somaxconn
echo "65536" > /proc/sys/net/ipv4/tcp_max_syn_backlog
echo "262144" > /proc/sys/net/netfilter/nf_conntrack_max
Überprüfen Sie, ob die Werte entsprechend gesetzt sind:
# cat /proc/sys/net/ipv4/ip_local_port_range
2048 64512
# cat /proc/sys/net/ipv4/tcp_tw_recycle
1
# cat /proc/sys/net/ipv4/tcp_tw_reuse
1
# cat /proc/sys/net/ipv4/tcp_fin_timeout
10
# cat /proc/sys/net/core/somaxconn
65536
# cat /proc/sys/net/ipv4/tcp_max_syn_backlog
65536
# cat /proc/sys/net/netfilter/nf_conntrack_max
262144
Anschließend werden die Einstellungen nach einem Neustart übernommen, indem Sie sie in der /etc/sysctl.conf Folgendes eingeben/ändern:
net.ipv4.ip_local_port_range = 2048 64512
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 10
net.core.somaxconn = 65536
net.ipv4.tcp_max_syn_backlog = 65536
net.netfilter.nf_conntrack_max = 262144
Tuning¶
Hinzufügen der RAM Disk zu fstab:
- none /var/www/html tmpfs defaults,size=6g
BÜberschreiben Sie den PHP-Code in der RAM-Disk:
# mv /var/www/html /var/www/html_fs
Kopieren Sie die ownCloud Installation auf die Festplatte und speichern den Symlink im ownCloud RAM data Verzeichnis.
Hinweis
RAM Festplatten werden nicht sicher neu gestartet. Sie müssen einen Weg finden, um fortbestehen zu lasswen und diese dann neu etablieren, beispielsweise durch Verwendung von cp oder rsync um sie von einer Stelle auf der Festplatte zu übertragen und um die RAM-Disk vor Apache zu starten.
Apache Tuning¶
Maximale Anzahl Apache-Prozesse¶
Ein Apache-Prozess wird rund 12 MB RAM verwenden. Apache sollte so konfiguriert sein, dass die maximale Anzahl von Prozessen httpd in einer Zeiteinheit 12MB niedriger ist als die Menge an verfügbaren RAM. nderenfalls beginnt das System Speicher zu tauschen und der Leistung sinkt. In diesem Fall ist die größte Zahl auf 6000 gesetzt worden.
Damit alles Läuft sollte sinnvolle Standardeinstellungen konfiguriert werden¶
KeepAlive On
KeepAliveTimeout 2
MaxKeepAliveRequests 10
mod_gzip¶
mod_gzip sollte verwendet werden, da es die Übertragung von Daten beschleunigt und es hilft, kostenlosen Server-Speicher und http-Verbindungen schneller abzuschließen.
php safe mode¶
PHP Safe Mode muss ausgeschaltet werden. Er ist veraltet und wird in neueren PHP-Versionen entfernt werden.
MPM¶
Es wird empfohlen Apache prefork zu verwenden. Der Gebrauch von MPM mit mod_php ist derzeit in PHP nicht Thread-sicher.
Hostname Lookups¶
# cat /etc/httpd/conf/httpd.conf
...
HostnameLookups off
...
Log Dateien¶
Log-Dateien sollte für maximale Leistung ausgeschaltet werden.
Kommentieren Sie die CustomLog` Directive aus. Behalten Sie aber ErrorLog damit Sie in der Lage sind, Fehler aufzuspüren.
MaxKeepAliveRequests 4096¶
<IfModule prefork.c>
StartServers 100
MinSpareServers 100
MaxSpareServers 2000
ServerLimit 6000
MaxClients 6000
MaxRequestsPerChild 4000
</IfModule>
<Directory "/var/www/html">
Options Indexes SymLinksIfOwnerMatch AllowOverride All
</Directory>
Best-Practice-Datenbank¶
Derzeit unterstützt ownCloud die folgenden relationalen Datenbank-Management-Systeme:
- mysql
- mariadb
- postgresql
- oracle
- mssql
Wir verwenden die Datenbank-Abstraktionsschicht und die Schemaevolution aud Basis der MDB2 Schema basierten Tabellenbeschreibung in XML.
Die Standardindizes werden gewählt, um die täglische Nutzung zu unterstützen. Weitere Indizes können eine weitere Verbesserung der Leistung ergeben.
MySQL / MariaDB¶
Einsatzszenario¶
Das Ist die empfohlene Einstellung, die gu getestet wurde.
Weitere Indizes¶
Index auf uid in oc_group_user:
create index oc_group_user_uid on oc_group_user(uid);
Index auf oc_share:
create index oc_share_file_target on oc_share(file_target);
Index auf oc_filecache:
create index oc_filepath on oc_filecache(storage,size);
Index auf oc_files_versions:
create index oc_files_versions_user on oc_files_versions(user);
Index auf oc_files_trashsize:
create index oc_files_trashsize_user on oc_files_trashsize(user);
Im Verlauf der Aufnahme in den Standard-Code können Sie verfolgen unter https://github.com/owncloud/core/issues/7474.
Andere Leistungsverbesserungen¶
Mysql: vergleichen Sie die https://tools.percona.com/wizard mit Ihren aktuellen Einstellungen unter MariaDB: https://mariadb.com/kb/en/optimization-and-tuning/
Postgresql¶
Einsatzszenario¶
Alternative zu MySQL. Wird im Betrieb ein paar Kern-Entwickler verwendet.
Migration¶
Benötigt mindestens PostgreSQL 9.0
Weitere Indizes¶
Die, die mit MySQL verwendet werden sollten gut funktionieren. Den Verlauf der Aufnahme in den Standard-Code können Sie verfolgen unter https://github.com/owncloud/core/issues/7474.
Andere Leistungsverbesserungen¶
Sehen Sie unter http://wiki.postgresql.org/wiki/Performance_Optimization nach.
Weitere Indizes¶
Die, die mit MySQL verwendet werden sollten gut funktionieren. Den Verlauf der Aufnahme in den Standard-Code können Sie verfolgen unter https://github.com/owncloud/core/issues/7474.
Oracle Datenbank¶
Einsatzszenario¶
Bestehende weitere Installationen in Ihrem Unternehmen, werden nur Core-Anwendungen unterstützt und getestet werden. Nicht empfohlen, da es Probleme bei der Erstellung mit dem OCI8 gibt.
Weitere Indizes¶
Die, die mit MySQL verwendet werden sollten gut funktionieren. Den Verlauf der Aufnahme in den Standard-Code können Sie verfolgen unter https://github.com/owncloud/core/issues/7474.
Andere Leistungsverbesserungen¶
Siehe unter http://de.slideshare.net/cjorcl/best-practices-php-and-the-oracle-database nach und fragen Sie Ihren DBA.
Probleme¶
Wenn ORA-56600 auftritt (Oracle Bug 8.467.564) setzen Sie diese Einstellung in der php.ini: oci8.statement_cache_size=1000, sehen Sie dazu auch im Oracle Diskussion Forum nach.
Microsoft SQL Server¶
Einsatzszenario¶
Nur Core-Anwendungen werden unterstützt. Nicht von Jenkins getestet.
Weitere Indizes¶
Die, die mit MySQL verwendet werden sollten gut funktionieren. Den Verlauf der Aufnahme in den Standard-Code können Sie verfolgen unter https://github.com/owncloud/core/issues/7474.
Andere Leistungsverbesserungen¶
Sehen Sie auch unter http://www.mssqltips.com/sql-server-tip-category/9/performance-tuning/ nach.