PHP_FCGI_MAX_REQUESTS Solves Job Cleanup Issues

One of PHP’s strengths is that each PHP job or process cleans itself up after every request. This makes PHP very reliable and stable.

On occasion, though, an extension may have a bug that leaks memory or causes other problems over time. If that happens, PHP’s FastCGI settings provide a solution.

PHP_FCGI_MAX_REQUESTS

A setting in fastcgi.conf, PHP_FCGI_MAX_REQUESTS determines how many requests a PHP job should handle before ending and restarting. The default of zero (0) means each job will handle an unlimited number of requests. When PHP_FCGI_MAX_REQUESTS is greater than zero, the job will restart after it receives that number of requests, cleaning up any issues that may have accumulated over time, such as memory leaks in extensions.

Example A:
SetEnv="PHP_FCGI_MAX_REQUESTS=0" (unlimited number of requests for the job)
Example B:
SetEnv="PHP_FCGI_MAX_REQUESTS=100" (restart job after 100 requests to that job)

Guidelines for Using PHP_FCGI_MAX_REQUESTS

Here is our advice on when to use PHP_FCGI_MAX_REQUESTS and what value to use:

  • If your problem is solved by restarting the web server, it’s likely that PHP_FCGI_MAX_REQUESTS will help, but in a smoother way. It basically causes a slow-motion, undetectable rolling restart of the PHP jobs.
  • Choose a number that is high enough not to slow down your site, but low enough to restart a given job before any symptoms of the bug arise. A good starting number to try is 100. A lower number may be appropriate for a site with low volume; higher for high volume.

For more information on PHP FastCGI settings, see “Optimize Your IBM i Web Application Using FastCGI.”

1 reply

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.