Перейти к основному содержимому

Оптимизация производительности

Советы по ускорению FeedbackPulse SaaS по мере роста.


Быстрые победы

1. Кэширование конфигурации

php artisan config:cache    # Кэшировать .env и файлы конфигурации
php artisan route:cache # Кэшировать маршруты
php artisan view:cache # Предварительно компилировать Blade-представления

Запускайте после каждого развёртывания. Очищайте с помощью php artisan optimize:clear.

2. Использование Redis для кэша и сессий

Redis значительно быстрее файлового или базового кэша:

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

3. Использование очереди базы данных (минимум)

QUEUE_CONNECTION=database

Запустите воркер очереди через Supervisor для обработки задач в фоне вместо синхронного режима.

4. Включение 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 ; Отключить в продакшене

Оптимизация базы данных

Добавление индексов

FeedbackPulse поставляется с подходящими индексами, но если вы выполняете большие запросы, проверьте:

-- Проверить медленные запросы
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2;

Настройка MySQL

innodb_buffer_pool_size = 1G       # 50-70% доступной ОЗУ
innodb_log_file_size = 256M
max_connections = 200
innodb_flush_log_at_trx_commit = 2 # Небольшой компромисс надёжности ради скорости

Оптимизация веб-сервера

Nginx: включение Gzip

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

Кэширование статических файлов

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

Настройка PHP-FPM

pm = dynamic
pm.max_children = 20 # Настройте в зависимости от ОЗУ
pm.start_servers = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 10
pm.max_requests = 500 # Предотвращать утечки памяти

Рекомендации по масштабированию

АрендаторыРекомендуемая конфигурация
1–50Один VPS, файловый кэш, синхронная очередь
50–200Один VPS, Redis-кэш, очередь базы данных с Supervisor
200–1000Выделенный сервер, Redis-кэш+очередь, настройка MySQL
1000+Балансировщик нагрузки, отдельный сервер БД, Redis-кластер, несколько воркеров очереди

Мониторинг

# Проверить статус PHP-FPM
sudo systemctl status php8.4-fpm

# Проверить список процессов MySQL
mysqladmin processlist

# Проверить дисковое пространство
df -h

# Проверить использование памяти
free -m

# Проверить логи Laravel на ошибки
tail -f storage/logs/laravel.log

Следующие шаги