Otimização do PHP FPM para aplicações Laravel

Para otimizar o desempenho do php-fpm para uma aplicação Laravel, devemos realizar os seguintes ajustes:

memory_limit

Define o limite máximo de memória para scripts PHP. Laravel pode demandar memória considerável.

Recomendação:

memory_limit = 512M

Ajuste conforme seu uso (pode reduzir para 256M se houver cache intenso e otimizações).

max_execution_time

Tempo máximo de execução do script. Evita scripts travados.

Recomendação:

max_execution_time = 60

Pode aumentar para 120 se existirem processos longos.

max_input_time

Tempo máximo para processar os dados de entrada (POST, GET).

Recomendação:

max_input_time = 60

post_max_size e upload_max_filesize

Controle tamanho máximo de dados postados e uploads.

Recomendação:

post_max_size = 50M
upload_max_filesize = 50M

Ajuste conforme necessidade da aplicação.

realpath_cache_size

Laravel utiliza muitas inclusões de arquivos. Aumentar o cache melhora desempenho.

Recomendação:

realpath_cache_size = 4096k
realpath_cache_ttl = 600

Cache OPCache

Habilitar e otimizar OPCache para melhorar o desempenho PHP.

Recomendação:

opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.revalidate_freq=2
opcache.validate_timestamps=1
opcache.fast_shutdown=1

Exibição de erros

Em produção, desative exibição e habilite log de erros.

Recomendação:

display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log

Configurações de sessão

Se usar sessão base arquivo (padrão).

Recomendação:

session.gc_maxlifetime = 1440
session.save_handler = files
session.save_path = "/var/lib/php/sessions"

Se usar Redis/Memcached para sessão, configure no Laravel.

Configuração PHP-FPM (arquivo www.conf) recomendada

pm = dynamic
pm.max_children = 10
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 5

Ajuste de acordo com a demanda e memória da VPS.

Recomendações adicionais

* Use cache Laravel com Redis ou Memcached para melhorar performance. * Gere cache de configuração e rota:

  • php artisan config:cache
  • php artisan route:cache

* Otimize autoload do Composer com:

  • composer dump-autoload -o

Resumo do php.ini

memory_limit = 512M
max_execution_time = 60
max_input_time = 60
post_max_size = 50M
upload_max_filesize = 50M
realpath_cache_size = 4096k
realpath_cache_ttl = 600
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.revalidate_freq=2
opcache.validate_timestamps=1
opcache.fast_shutdown=1
display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log
session.gc_maxlifetime = 1440
session.save_handler = files
session.save_path = "/var/lib/php/sessions"