SuiteCRM-Performanceoptimierung

von

SuiteCRM 8.3 ist ein sehr mächtiges Werkzeug. Neben Verträgen, Supportfällen und einer Wissensdatenbank, ist es sehr leicht erweiterbar. Es gibt nur ein Problem: Mit Standardeinstellungen ist es unglaublich langsame.

PHP Optimierung

Schritt eins ist natürlich die Optimierung der PHP-Konfiguration. Opcache anzustellen brachte alleine eine Ladezeitreduzierung von etwa einem Drittel. Zusätzlich alle vorgeschlagenen Erweiterungen von PHP zu installieren brachte noch einmal etwa ein sechstel mehr Performance.

max_execution_time = 0
error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
[opcache]
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.max_wasted_percentage=5
opcache.use_cwd=1
opcache.validate_timestamps=1
opcache.revalidate_freq=5

Caching

Normalerweise nutzt SuiteCRM das Dateisystem als Cache. Dieses mit Memcached zu ersetzen, indem die Konfiguration angepasst wurde, brachte beinahe 40% schnellere Ladezeiten. Und das obwohl der Cache war vorher bereits auf einer SSD war, also nicht besonders langsam war.

$sugar_config['developerMode'] = false;
$sugar_config['list_max_entries_per_page'] = '10';
$sugar_config['logger']['level'] = 'fatal';
$sugar_config['disable_vcr'] = true;
$sugar_config['disable_count_query'] = true;
$sugar_config['verify_client_ip'] = false;
$sugar_config['external_cache']['memcache']['host'] = '127.0.0.1';
$sugar_config['external_cache']['memcache']['port'] = '11211';

Datenbank

Wir nutzen einige selbsterstellte Module und haben die Standardmodule an unsere Bedürfnisse angepasst. Die Reduzierung der zu zeigenden Felder und ein Hinzufügen von Indices sorgte für eine weitere kleine Performancesteigerung. Diese war allerdings nicht besonders groß, da wir bisher relativ wenig Daten verwalten.

Logging

SuteCRM logged viel, viele Warnungen und andere Meldungen mit geringerer Priorität. Es wird so viel gelogged, dass es etwa 15% Geschwindigkeit bei allen Requests gab, das Loglevel auf Error zu setzen.

Existierende Tipps

Die existierenden Tipps, die SuiteCRM bereitstellt, waren meiner Erfahrung nach wenig hilfreich. Die Ladezeitenreduzierung lag meist im einstelligen Prozentbereich und war damit nicht so groß, wie der Vorteil, den schwerer zu findende Tipps wie Memcached bringen. Ich hoffe, dass dieser Blogpost dabei hilft das Problem des Findens zu reduzieren.