Performance-Optimierung
Tipps, um FeedbackPulse SaaS beim Skalieren schneller zu machen.
Schnelle Gewinne
1. Konfiguration cachen
php artisan config:cache # .env- und Konfig-Dateien cachen
php artisan route:cache # Routen cachen
php artisan view:cache # Blade-Views vorkompilieren
Nach jedem Deployment ausführen. Mit
php artisan optimize:clearleeren.
2. Redis für Cache & Sessions verwenden
Redis ist deutlich schneller als Datei- oder Datenbank-Cache:
sudo apt install redis-server php8.4-redis
CACHE_STORE=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis
3. Datenbank-Queue verwenden (Minimum)
QUEUE_CONNECTION=database
Einen Queue-Worker über Supervisor ausführen, um Jobs im Hintergrund statt synchron zu verarbeiten.
4. OPcache aktivieren
; /etc/php/8.4/fpm/conf.d/10-opcache.ini
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
opcache.validate_timestamps=0 ; In Produktion deaktivieren
Datenbankoptimierung
Indizes hinzufügen
FeedbackPulse wird mit passenden Indizes ausgeliefert, aber bei großen Abfragen prüfen:
-- Auf langsame Abfragen prüfen
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2;
MySQL-Tuning
innodb_buffer_pool_size = 1G # 50-70 % des verfügbaren RAM
innodb_log_file_size = 256M
max_connections = 200
innodb_flush_log_at_trx_commit = 2 # Kleiner Dauerhaftigkeits-Kompromiss für Geschwindigkeit
Webserver-Optimierung
Nginx: Gzip aktivieren
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml;
gzip_min_length 256;
gzip_vary on;
Statisches Datei-Caching
location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg|woff|woff2)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
PHP-FPM-Tuning
pm = dynamic
pm.max_children = 20 # Je nach RAM anpassen
pm.start_servers = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 10
pm.max_requests = 500 # Speicherlecks verhindern
Skalierungsempfehlungen
| Mandanten | Empfohlenes Setup |
|---|---|
| 1–50 | Einzel-VPS, Datei-Cache, synchrone Queue |
| 50–200 | Einzel-VPS, Redis-Cache, Datenbank-Queue mit Supervisor |
| 200–1.000 | Dedizierter Server, Redis-Cache+Queue, MySQL-Tuning |
| 1.000+ | Load-Balancer, separater DB-Server, Redis-Cluster, mehrere Queue-Worker |
Monitoring
# PHP-FPM-Status prüfen
sudo systemctl status php8.4-fpm
# MySQL-Prozessliste prüfen
mysqladmin processlist
# Festplattenspeicher prüfen
df -h
# Speichernutzung prüfen
free -m
# Laravel-Logs auf Fehler prüfen
tail -f storage/logs/laravel.log