名前はまだない

インフラとバックエンドの間を彷徨っているエンジニア…の卵

php-fpmのgraceful reloadを試してみる

  • php-fpmのgraceful reloadが正常に動作してないらしい?ので確認してみる

手順

  • とりあえずphp7の環境を整える
    • 使用環境はCentOS7

PHPインストール

sudo amazon-linux-extras install php7.2

www.tecmint.com

  • 確認
$ php -v
  • php-fpmの起動確認
$ sudo systemctl start php-fpm
$ sudo systemctl status php-fpm

Nginx

  • /var/www/html/index.phpを作っておく
<?php
sleep(10);
echo "OK";
?>
  • 大人の事情でnginxからphp-fpmに飛ばす
server {
        listen 80;
        server_name _;
        location / {
                root /var/www/html;
                allow 127.0.0.1;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_index index.php;
                include fastcgi_params;
                fastcgi_pass 127.0.0.1:9000;
        }
}
  • curl localhostでアクセスの確認をする

Graceful reloadのチェック

  • プロセスの確認用にhtopを使った
  • ブラウザ or curlでアクセスしているタイミングで以下のコマンドを打つ
$ sudo systemctl reload php-fpm
  • nginxから502が返ってくる
    • 全然Gracefulじゃないじゃん…

対策

  • ここを参考にphp-fpm(/etc/php-fpm.conf)のコンフィグをいじる
process_control_timeout = 30

seri.hatenablog.com

  • sudo systemctl restart php-fpmをしてから再度同じ様にトライするとnginxからのエラーは返ってこずにGracefulphp-fpmがreloadされる