Follow-up: use ondemand PHP-FPM masters using systemd

Mattias Geniar, Sunday, April 13, 2014

A few days ago, I published a blogpost called A better way to run PHP-FPM. It's gotten a fair amount of attention. It detailed the use of the "ondemand" process manager as well as using a separate PHP-FPM master per pool, for a unique APC cache.

The setup works fine, but has the downside that you'll have multiple masters running -- an obvious consequence. Kim Ausloos created a solution for this by using systemd's socket activation. This means PHP-FPM masters are only started when needed and no longer stay active on the system when obsolete.

This has a few benefits and possible downsides;

  • Pro: masters are only spawned when needed, meaning less memory consumed overall
  • Pro: masters are also killed when they're obsolete, so a perfect ondemand scenario
  • Min: no longer able to restart a PHP-FPM pool when needed (to load new .INI settings), all pools would restart?
  • Min: APC cache will be destroyed whenever a PHP-FPM master is killed (which may not be a bad thing, for low-traffic sites)

I'll do some more testing on this use-case, as well as the performance penalty (if any) of having to start new master on a first request to the PHP-FPM socket. For this to work out, RHEL or CentOS 7 is needed in my case (we're a RHEL/CentOS shop), as systemd is required and will only be supported from RHEL/CentOS 7.


Hi! My name is Mattias Geniar. If you're interested in keeping up with me, have a look at my podcast and weekly newsletter. For more updates, follow me on Twitter as @mattiasgeniar.

SysCast podcast

In the SysCast podcast I talk about Linux & open source projects, interview sysadmins or developers and discuss web-related technologies. A show by and for geeks!

cron.weekly newsletter

A weekly newsletter - delivered every Sunday - for Linux sysadmins and open source users. It helps keeps you informed about open source projects, Linux guides & tutorials and the latest news.

Share this post

Did you like this post? Will you help me share it on social media? Thanks!

Comments

Lennie Sunday, April 13, 2014 at 14:54

I think you or I should read the article again, but I didn’t see how the masters are automatically killed.

Reply


    Mattias Geniar Sunday, April 13, 2014 at 14:55

    There’s a script mentioned at the bottom, that scans for masters without children and then kills them.

    Reply


      Lennie Sunday, April 13, 2014 at 15:05

      Ohh, now I understand what he meant.

      Silly me.

      See, so it was me. :-)

      Reply


Leave a Reply

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