php-fpm相關配置

雪花飄發表於2021-12-10

最近測試環境老是被 php-fpm打滿,但是又不知道怎麼排查,分析不出是哪些請求佔用導致 php-fpm 沒有釋放,於是學習了一下 php-fpm 的配置;
通過 /status可以檢視子程式處理請求的資訊,但是這個一般不會開放,只能在自己的機器搞搞;測試時配置了慢日誌,sleep 了10 秒,發現沒往 log.slow檔案裡寫日誌,還不確定是什麼原因。

  • 檢視 php 配置檔案 ini 的路徑
    php -i | grep .ini

Go

  • 檢視 php-fpm 配置檔案路徑
    ps -ef | grep php-fpm

Go

  • php-fpm 重啟
    關閉
    kill -INT `cat /usr/local/var/run/php-fpm.pid`
    平滑重啟
    kill -USR2 `cat /usr/local/var/run/php-fpm.pid`
    暴力重啟
    先關閉,再啟動 killall php-fpm && /usr/local/sbin/php-fpm &
  • 修改子程式管理模式,pm 配置
    修改配置
    pm = static
    pm.max_children = 3
    表示固定子程式數為 3 個

Go

修改配置
pm = ondemand
pm.max_children = 2
表示子程式按需生成,最多2個,pm.process_idle_timeout 表示空閒程式空閒多少秒後超時退出

Go

修改配置
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
表示子程式是動態生成,服務啟動時建立 2 個子程式,最大空閒程式 3 個,最小空閒程式 1 個,最多子程式 5 個

Go

  • 配置訪問程式狀態
    修改配置
    pm.status_path = /status
    修改 nginx 配置
    location /status {
      fastcgi_pass   php:9000;
      include        fastcgi_params;
      fastcgi_param  SCRIPT_FILENAME $fastcgi_script_name;
      fastcgi_param HTTP_X_FORWARDED_FOR host.docker.internal;
     }
    重啟相關服務後,訪問 xxx.com:8888/status?json&full

Go
可以看到相關指標

本作品採用《CC 協議》,轉載必須註明作者和本文連結
雪花飄

相關文章