plakhin / fpm-optimize
Suggests optimal php-fpm config values based on system config and load
Fund package maintenance!
plakhin
Requires
- php: ^8.3.0
- illuminate/process: ^11.0|^12.0
- spatie/laravel-package-tools: ^1.19
Requires (Dev)
- larastan/larastan: ^3.1
- laravel/pint: ^1.21
- orchestra/testbench: ^9.0|^10.0
- pestphp/pest: ^3.7
- pestphp/pest-plugin-laravel: ^3.1
- pestphp/pest-plugin-type-coverage: ^3.3
- phpstan/extension-installer: ^1.4
- phpstan/phpstan-deprecation-rules: ^2.0
- phpstan/phpstan-phpunit: ^2.0
- rector/rector: ^2.0
- symfony/var-dumper: ^7.2
README
Optimal PHP-FPM config values based on system configuration and load
Important
Since v2.0 only Linux is supported.
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.
The most simple way to get the optimal PHP-FPM config values suggestions is to run the following command:
sh <(curl -s https://raw.githubusercontent.com/plakhin/fpm-optimize/main/suggest-fpm-config-values.sh)
Laravel
Also, you can install the package with composer as a dependency to your Laravel 11+ project:
composer require plakhin/fpm-optimize
Once installed, you can run php artisan optimize:php-fpm
command to see the suggested php-fpm config values.
Additionally, 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.
Contributing
Contributions are welcome, and are accepted via pull requests. Please review these guidelines before submitting any pull requests.
Process
- Fork the project
- Create a new branch
- Code, test, commit and push
- 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.