PHP-FPM 配置初始化

php-fpm(FastCGI Process Manger)是一個PHP FastCGI 管理器,專門和Nginx 的 ngx_fastcgi_modul模塊對接,用來處理動態請求。php

初始化

當安裝了PHP 以後,能夠從如下三個方向來對默認配置進行修改,以達到優化的效果。vim

1. 核心配置文件

核心配置文件其實就是 php.ini,該配置文件的做用一般是用來啓用或禁用第三方模塊,及修改PHP 時區等。服務器

# vim /usr/local/etc/php/php.ini

date.timezone = Asia/Shanghai

2. 全局配置文件

全局配置文件php-fpm.conf,一般用來配置一些輔助性功能。php7

# vim /usr/local/etc/php-fpm.conf

error_log = /var/log/php-fpm/error.log
log_level = notice
;process_max = 0
deamonize = yes

參數解析:socket

  • error_log:錯誤日誌路徑
  • log_level:日誌級別,默認爲noticephp-fpm

    • alert:必須當即處理
    • error:錯誤狀況
    • warning:警告狀況
    • notice:通常重要信息
    • debug:調試信息
  • process_max:控制最大子進程數的全局變量,不建議設置具體數量,由於會限制擴展配置。
  • daemonize:是否開啓守護進程,默認爲yes

一般不會在php-fpm.conf中設定 process_max,由於會限制www.conf中的配置。優化

3. 擴展配置文件

擴展配置文件www.conf一般是與php-fpm服務相關的配置,大部分優化都是須要更改這個配置文件。spa

# vim /usr/local/etc/php-fpm.d/www.conf

listen = 127.0.0.1:9000
slowlog = /var/log/php-fpm/www-slow.log

# 這裏按照10G 的空閒內存去設定
pm = dynamic
pm.start_servers = 16
pm.max_children = 256
pm.min_spare_servers = 16
pm.max_spare_servers = 32
pm.max_requests = 1000

參數解析:debug

  • listen:有兩種方式能夠進行通信。unix

    • socketunix:/run/php/php7.3-fpm.sock
    • http127.0.0.1:9000 由於php-fpmngx_fastcgi_modul的通信方式是 9000端口,因此默認是 127.0.0.1:9000
  • slowlog:慢查詢日誌路徑
  • pm:進程管理方式

    • static:靜態模式。始終保持固定數量的子進程數,配合最大子進程數一塊兒使用,這個方式很不靈活,一般不是默認。

      • pm.max_children:最大子進程數。
    • dynamic:動態模式。按照固定的最小子進程數啓動,同時用最大子進程數去限制。

      • pm.start_servers:默認開啓的進程數
      • pm.min_spare_servers:最小空閒的進程數
      • pm.max_spare_servers:最大空閒的進程數
      • pm.max_children:最大子進程數
      • pm.max_requests:每一個進程能響應的請求數量,達到此限制以後,該PHP 進程就會被自動釋放掉。
    • nodaemonize:每一個進程在閒置必定時候後就會被殺掉。

      • pm.max_children:最大子進程數
      • pm.process_idle_timeout:在多少秒以後,一個空閒的進程將會被殺死

注意:max_children 是 PHPFPM Pool 最大的子進程數,它的數值取決於服務器實際空閒內存。假設你有一臺10G 運行內存的服務器,咱們知道一個空閒的PHP 進程佔用的是 1M 內存,而一個正在處理請求的PHP 進程 大概會佔用10M-40M內存,這裏按照每一個PHP 請求佔用 40M 內存,那麼max_children = 10*1024M/40M = 256,因此這個值得根據實際環境而設定。

以上就是php-fpm 初始化配置的核心部分了。

相關文章
相關標籤/搜索