Aller au contenu principal

Optimisation des Performances

Conseils pour accélérer FeedbackPulse SaaS à mesure que vous montez en charge.


Gains rapides

1. Mise en cache de la configuration

php artisan config:cache    # Mettre en cache .env et les fichiers de configuration
php artisan route:cache # Mettre en cache les routes
php artisan view:cache # Pré-compiler les vues Blade

Exécutez ces commandes après chaque déploiement. Videz avec php artisan optimize:clear.

2. Utiliser Redis pour le cache et les sessions

Redis est nettement plus rapide que le cache fichier ou base de données :

sudo apt install redis-server php8.4-redis
CACHE_STORE=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis

3. Utiliser la file d'attente base de données (minimum)

QUEUE_CONNECTION=database

Exécutez un worker de file d'attente via Supervisor pour traiter les tâches en arrière-plan plutôt qu'en ligne.

4. Activer OPcache

; /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 ; Désactiver en production

Optimisation de la base de données

Ajouter des index

FeedbackPulse est livré avec des index appropriés, mais si vous exécutez de grandes requêtes, vérifiez :

-- Vérifier les requêtes lentes
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2;

Réglage MySQL

innodb_buffer_pool_size = 1G       # 50-70% de la RAM disponible
innodb_log_file_size = 256M
max_connections = 200
innodb_flush_log_at_trx_commit = 2 # Léger compromis durabilité/vitesse

Optimisation du serveur web

Nginx : Activer Gzip

gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml;
gzip_min_length 256;
gzip_vary on;

Mise en cache des fichiers statiques

location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg|woff|woff2)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}

Réglage PHP-FPM

pm = dynamic
pm.max_children = 20 # Ajustez selon la RAM
pm.start_servers = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 10
pm.max_requests = 500 # Prévenir les fuites mémoire

Recommandations de montée en charge

LocatairesConfiguration recommandée
1-50VPS unique, cache fichier, file synchrone
50-200VPS unique, cache Redis, file base de données avec Supervisor
200-1 000Serveur dédié, cache+file Redis, réglage MySQL
1 000+Équilibreur de charge, serveur DB séparé, cluster Redis, plusieurs workers de file

Surveillance

# Vérifier le statut PHP-FPM
sudo systemctl status php8.4-fpm

# Vérifier la liste des processus MySQL
mysqladmin processlist

# Vérifier l'espace disque
df -h

# Vérifier l'utilisation mémoire
free -m

# Vérifier les journaux Laravel pour les erreurs
tail -f storage/logs/laravel.log

Étapes suivantes