Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

I want to set only one listening unix socket for all php-fpm pools, but fpm requires them to be deferent. Production server has 2 gb ram and i noticed that it started to be not enough, adding more websites spawn more fpm processes. Me is only one user on this server, so i don't need to limit resources per pool just want to set common config settings for all. One domain pool as follows:

  [domain.com]
    user = www
    group = www
    listen = /tmp/domain.com-php-fpm.sock
    security.limit_extensions = .php .html

   ;Resources
   pm = dynamic
   pm.max_children = 9
   pm.start_servers = 3
   pm.min_spare_servers = 2
   pm.max_spare_servers = 4
   pm.process_idle_timeout = 60s
   request_terminate_timeout = 30s
   pm.max_requests = 300

   ;Log errors
   catch_workers_output = yes
   php_flag[display_errors]   = on
   php_admin_value[error_log] = /var/log/www/domain.com/php-error.log

   ;Base dirs
   php_admin_value[open_basedir] = /usr/local/www/domain.com
   php_admin_value[upload_tmp_dir] = /usr/local/www/domain.com/tmp 
   php_admin_value[session.save_path] = /usr/local/www/domain.com/tmp

Another pool is the same, except domain name. So then if I set same listening socket for both pools it doesn't work

# php-fpm --test
[12-Sep-2013 22:27:01] ERROR: [pool domain.com] unable to set listen address as it's already used in another pool 'domain2.com'
[12-Sep-2013 22:27:01] ERROR: failed to post process the configuration
[12-Sep-2013 22:27:01] ERROR: FPM initialization failed

And if set deferent sockets, it works, but each pool spawn minimum 3 process. (Sure, this is not an output from real server, just simulated same behavior).

# ps aux | grep php-fpm
root   1349   0.0  0.9 161376 18320 ??  Ss   10:34PM   0:00.02 php-fpm: master process (/usr/local/etc/php-fpm.conf) (php-fpm)
www    1350   0.0  0.9 161336 18292 ??  S    10:34PM   0:00.00 php-fpm: pool domain2.com (php-fpm)
www    1351   0.0  0.9 161336 18292 ??  S    10:34PM   0:00.00 php-fpm: pool domain2.com (php-fpm)
www    1352   0.0  0.9 161336 18292 ??  S    10:34PM   0:00.00 php-fpm: pool domain2.com (php-fpm)
www    1353   0.0  0.9 161336 18292 ??  S    10:34PM   0:00.00 php-fpm: pool domain.com (php-fpm)
www    1354   0.0  0.9 161336 18292 ??  S    10:34PM   0:00.00 php-fpm: pool domain.com (php-fpm)
www    1355   0.0  0.9 161336 18292 ??  S    10:34PM   0:00.00 php-fpm: pool domain.com (php-fpm)

My intention is to keep running 3 php-fpm processes for all pools.

share|improve this question
    
If you only need one pool, why are you running more than one? –  Michael Hampton Sep 12 '13 at 20:13
    
Because i guess this is only way to separate php scripts by using php_admin_value[open_basedir] value. That means if one website hacked, they can't move up and infect others. Another thing is per website logs. If it possible, could you please share such config with one pool ? –  Demontager Sep 12 '13 at 20:30
    
OK, so you really do need separate pools. They must have separate sockets; you can't get around this. –  Michael Hampton Sep 12 '13 at 20:31
    
That's i afraid the most, so sad. Let's assume i may live without per website logs and same time need to chroot each website. Is anything could I try ? I never tried these following options, maybe they can help -; ;chroot = ;chdir = /var/www –  Demontager Sep 12 '13 at 20:44
    
What are you trying to do?! I can't think of any real reason to even attempt this. –  Michael Hampton Sep 12 '13 at 20:58

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.