Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add PHP-FPM conf and tuning settings #1496

Merged
merged 1 commit into from
Jul 25, 2023
Merged

Conversation

swalkinshaw
Copy link
Member

Allows customization of the PHP-FPM service configuration. Previously only the pool configuration was exposed in Trellis. This allows for more advanced performance tuning.

Note: moved over from #1444 by @paulbrzeski (added you as co-author) to make this easier to manage and deal with conflicts + Git history.

Below is the original description:

Sharing a couple of changes we've made to our Trellis so we can fine tune PHP settings for high traffic websites.

Changes include,

  • PHP-FPM crash prevention and optimisation
  • Small improvements to make things more semantic
  • Various configs to support above

This PR only provides the defaults, you can override these settings like any other using your group_vars configs.

PHP FPM for a server sharing environment with MariaDB.
New variables to add to group_vars/%ENV%/php.yml,

# Allow a max of 100 children, based on 16GB of ram and 164mb per child.
php_fpm_pm_max_children: 100
# Start and go up in small incremenets as we have the CPU to spare.
php_fpm_pm_start_servers: 5
php_fpm_pm_min_spare_servers: 5
php_fpm_pm_max_spare_servers: 35
# Allow lots of requests as we have the resources to spare.
php_fpm_pm_max_requests: 1000

# Emergency restart settings.
# Restart after 60 seconds if 10 PHP instances have not responded for 5 min

# Number of child processes not responding
php_fpm_set_emergency_restart_threshold: true
php_fpm_emergency_restart_threshold: 10

# Length of time children not responding.
php_fpm_set_emergency_restart_interval: true
php_fpm_emergency_restart_interval: 5m

# Time to wait before restarting after interval passes.
php_fpm_set_process_control_timeout: true
php_fpm_process_control_timeout: 60s

More info - https://geekflare.com/php-fpm-optimization/

(previously #1430)

Allows customization of the PHP-FPM service configuration. Previously
only the _pool_ configuration was exposed in Trellis. This allows for
more advanced performance tuning.

The PHP-FPM php.ini template is the default values as a starting point.

Co-authored-by: Paul Brzeski <[email protected]>
@swalkinshaw swalkinshaw merged commit f1377d1 into master Jul 25, 2023
2 checks passed
@swalkinshaw swalkinshaw deleted the add-php-fpm-config-settings branch July 25, 2023 03:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant