Skip to content

软件&环境

lupeng0512 edited this page Aug 7, 2017 · 1 revision

软件&环境

PHP 优化建议

  1. Compile PHP's modules as less as possible, the simple the best (fast);
  2. Increas PHP FastCGI child number to 100 and even more. Sometime, 200 is OK! ( On 4GB memory server);根据实际情况处理
  3. Using SOCKET PHP FastCGI, and put into /dev/shm on Linux; mysql读写频繁时可能会产生问题。如果有问题则改为tcp方式
  4. Increase Linux "max open files", using the following command (must be root):
    echo 'ulimit -HSn 65536' >> /etc/profile
    echo 'ulimit -HSn 65536 >> /etc/rc.local
    source /etc/profile
  5. Increase PHP-FPM open file description rlimit:
    vi /path/to/php-fpm.conf
    Find "1024"
    Change 1024 to 4096 or higher number.
    Restart PHP-FPM.
  6. Using PHP code accelerator, e.g APC. And set "cache_dir" to /dev/shm on Linux.

配置参数

pid = /var/run/php-fpm-xxx.pid 设置pid文件
error_log = /var/log/php-fpm/php-fpm-error.log 设置错误日志文件
log_level = notice
错误级别.alert(必须立即处理),error(错误情况),warning(警告情况),notice(一般重要信息),debug(调试信息)
默认:notice
user=www 启动进程的用户
group=www 启动进程的组

daemonize = yes
后台执行fpm,默认值为yes,如果为了调试可以改为no。在FPM中,可以使用不同的设置来运行多个进程池。
这些设置可以针对每个进程池单独设置。
listen = 127.0.0.1:9000
fpm监听端口,即nginx中php处理的地址。可用格式为: 'ip:port','port','/path/to/unix/socket'.
每个进程池都需要设置.
listen.allowed_clients = 127.0.0.1 允许访问fastcgi进程的ip。any为任何ip,每个地址用逗号分隔。默认为any

pm = dydynamic|static
pm.max_children:静态方式下开启的php-fpm进程数量。
pm.start_servers:动态方式下的起始php-fpm进程数量。
pm.min_spare_servers:动态方式下的最小php-fpm进程数量。
pm.max_spare_servers:动态方式下的最大php-fpm进程数量。

动态适合小内存机器,灵活分配进程,省内存。静态适用于大内存机器,动态创建回收进程对服务器资源也是一种消耗  
一般php-fpm进程占用20~30m左右的内存就按30m算。如果单独跑php-fpm,动态方式起始值可设置物理内存Mem/30M,  
如果Nginx、MySQL都在一台机器上,于是预留一半给它们,即php-fpm进程数为$Mem/2/30。  

pm.max_requests = 500 每个子进程重生之前服务的请求数。设置为'0'则一直接受请求
等同于环境变量PHP_FCGI_MAX_REQUESTS
默认值:0
页面查看运行状态
nginx中添加配置
location ~ ^/(status)$ {
include fastcgi_params;
fastcgi_pass unix:/tmp/php-fpm-test-wyx-com.sock;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
}
pm.status_path = /status
ping.path = /ping FPM监控页面的ping网址.如果没有设置,则无法访问ping页面.
该页面用于外部检测FPM是否存活并且可以响应请求.必须以斜线开头 (/)
ping.response = pong 用于定义ping请求的返回相应.返回为HTTP 200的text/plain格式文本.默认值:pong

request_terminate_timeout = 0 单个请求的超时中止时间,针对php.ini设置中的'max_execution_time'的失效
设置为 '0' 表示 'Off'
request_slowlog_timeout = 10s 当一个请求该设置的超时时间后,就会将对应的PHP调用堆栈信息完整写入到慢日志中.
设置为 '0' 表示 'Off'
slowlog = /var/log/php-fpm/php-fpm-slow.log 慢请求的记录日志

Clone this wiki locally