plakhin/fpm-optimize

Suggests optimal php-fpm config values based on system config and load

Fund package maintenance!
plakhin

1.1.0 2025-02-24 09:47 UTC

This package is auto-updated.

Last update: 2025-03-26 14:27:07 UTC


README

Screenshot of the `php artisan optimize:php-fpm` command

Optimal PHP-FPM config values based on system configuration and load

Tests Latest Version on Packagist Total Downloads

Warning

Despite the package also runs on Windows and macOS, it wasn't tested well enough on those operating systems, so pay close attention to the system config and load values it outputs.

This package determines the number of system CPU cores, available RAM, and average RAM usage per PHP-FPM pool worker process. It then calculates the opinionated optimal values for PHP-FPM pool configuration, such as:

  • pm.max_children
  • pm.start_servers
  • pm.min_spare_servers
  • pm.max_spare_servers

Don't forget to keep an eye on your php-fpm.log to avoid failures!

Installation & Usage

Important

Ensure that your server is operating normally and serving incoming requests before executing the package command. This command takes into account the available RAM and the average RAM usage per PHP-FPM pool worker process to calculate values.

Globally

The most simple way, if you have Composer globally installed,
is to create temporary project and run the command by the single line:

composer create-project --no-dev --remove-vcs plakhin/fpm-optimize /tmp/plakhin-fpm-optimize && /tmp/plakhin-fpm-optimize/bin/fpm-suggest

Then you may safely delete the created temporary project if you don't need it anymore:

 cd /tmp && rm -rf plakhin-fpm-optimize && cd -

Locally

Also, you can install the package with composer just locally as a dependency to your project:

composer require plakhin/fpm-optimize

And run it with

./vendor/bin/fpm-suggest

Laravel

Once installed locally as a dependency into Laravel 11+ app,
this package adds php-fpm config values suggestions into optimize Artisan Command output.

If you don't want this behavior,
simply set FPM_OPTIMIZE_INJECT_INTO_ARTISAN_OPTIMISE_COMMAND=false in your .env file.

Additionally, you can run php artisan optimize:php-fpm command to see the suggested php-fpm config values.

Contributing

Contributions are welcome, and are accepted via pull requests. Please review these guidelines before submitting any pull requests.

Process

  1. Fork the project
  2. Create a new branch
  3. Code, test, commit and push
  4. Open a pull request detailing your changes.

Guidelines

  • Please ensure the coding style running composer lint.
  • Please keep the codebase modernized using automated refactors with Rector composer refactor.
  • Send a coherent commit history, making sure each individual commit in your pull request is meaningful.
  • You may need to rebase to avoid merge conflicts.
  • Please remember to follow SemVer.

Linting

composer lint

Refactoring with Rector

composer refactor

Testing

Run all tests:

composer test

Check code style:

composer test:lint

Check possible code improvements:

composer test:refactor

Check types:

composer test:types

Run Unit tests:

composer test:unit

Changelog

Please see CHANGELOG for more information on what has changed recently.

Credits

License

The MIT License (MIT). Please see License File for more information.