Configuring php-fpm
When configuration php-fpm you are able to configure it using ports or sockets.
The best thing to do is configure with socks as this avoids the networking stack associated with ports.
This means that php-fpm will be using files (sockets) to run which could be considered slower because of potential slow HDDs however the files are mostly stored in RAM so it makes accessing them significantly quicker.
CentOS 6 uses FHS 2.3, this means that it uses /dev/shm for accessing RAM
Sockets | fastcgi_pass unix:/dev/shm/php-fpm-example.com.sock |
---|---|
Ports | fastcgi_pass 127.0.0.1:9000; |
You can see from the output below the tmpfs (temporary file system) is mounted to /dev/shm:
# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda2 1.8T 194G 1.6T 12% / tmpfs 1.9G 4.0K 1.9G 1% /dev/shm /dev/sda1 190M 88M 93M 49% /boot
Configuring php-fpm Pool
To specify different server pools for each website you can create a website pool in the /etc/php-fpm.d/ directory.
E.g /etc/php-fpm.d/lukeslinux.co.uk
You would then want something similar to the following:
[lukeslinux.co.uk] listen = /dev/shm/php-fpm-lukeslinux.co.uk.sock listen.allowed_clients = 127.0.0.1 user = nginx group = nginx pm = dynamic pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 35 slowlog = /var/log/php-fpm/lukeslinux.co.uk-slow.log php_admin_value[error_log] = /var/log/php-fpm/lukeslinux.co.uk-error.log php_admin_flag[log_errors] = on php_value[session.save_handler] = files php_value[session.save_path] = /var/lib/php/session
Troubleshooting
If you are looking to view the processes, you will need to use different commands depending on how its been configured:
Config | Command | |
---|---|---|
socket | netstat -plnx | grep 'php-fpm' |
port | netstat -plnt | grep 'php-fpm |
Example output of netstat -plnx:
unix 2 [ ACC ] STREAM LISTENING 146689 21372/php-fpm: mast /dev/shm/php-fpm-lukeslinux.co.uk.sock
Website Issues
Make sure that php-fpm hasnt hit max processes;
grep "pm.max_spare_servers" /etc/php-fpm.d/www.conf
ps -eo cmd,pid,pcpu --sort:-pcpu | grep -v grep | grep -c php-fpm