Apache

  (最終更新日:2015.10.9)

Apacheでreloadとgracefulを試した動きのメモ

Apacheにおける reload コマンドと graceful コマンドの動きを見てみようと思いましたので、下記のようなPHPスクリプトを作成してみました。
ブラウザからアクセスすると30秒待って《OK》が表示されます。

<?php

sleep(30);
echo "OK";

?>

まずは reload を試す

reload は、『全ての処理中リクエストは終了される』とか聞きますが果たして?

とりあえずブラウザから test.php にアクセス。待ち状態に入ります。
そこですかさずサーバ側で reload を実施。

$ /etc/rc.d/init.d/httpd2 reload
httpd を再読み込み中:                                      [  OK  ]

切れない…

少し想定と違いました。
どうやら切れないようです。

続いて graceful を試す

graceful は『プロセスが終わるのを待ってから新しい設定を反映させる』とか聞きますが果たして?

先ほどと同様にブラウザから test.php にアクセス。待ち状態に入ります。
そこですかさずサーバ側で graceful を実施。

$ /etc/rc.d/init.d/httpd2 graceful

あれ?
30秒待たずにいきなり《OK》が表示されました‥。

PHPログにも何も出力されていません。
どうやら子プロセス(sleep)が強制的に終了させられて次の処理に移り、処理完了となったみたいです。

結論

結論として、 graceful は子プロセスが強制的に終了させられて進む。

reload は終了まで待たされる。

という感じになりました。なるほど。

スポンサーリンク
スポンサーリンク

関連記事

  1. Apache

    mod_rewriteでログ出力をして500エラーを調査する方法

    .htaccessでのmod_rewriteが原因で、Internal…

  2. Apache

    オレオレ証明書(自己証明書)を大急ぎで作る方法

    取り急ぎ1年間(365日)有効なオレオレ証明書を大急ぎ(最短作業)で作…

  3. Apache

    【凡ミス】Apache2.2系でAliasを指定したら403エラーが出た原因

    Apache2.2.23を使用。下記のようにAlias設定を入…

  4. Apache

    RewriteCondが効かない?特定のディレクトリを除外する方法でつまずいたお話

    CakePHPをトップディレクトリから利用しています。http:/…

  5. Apache

    Apache 2.4をソースからインストールする

    Apache 2.4系をソースでインストールする方法です。2.…

コメント

    • いぬえもん
    • 2017年 1月 05日

    gracefulするとsleepが効かない原因を調べていたらここにたどり着きました。
    “子プロセスが”というより”sleepが”無視されている感じなんですよねぇ…

  1. この記事へのトラックバックはありません。

最近の記事

  1. さくらのVPSにCentOS 5をインストールする方法
  2. PHP PhantomJSでFatal error: Unc…
  3. 【Oracle】DataPumpの対話式コマンドモードを抜け…
  4. CentOS7のPHP5.6にPhpSpreadsheetを…
  5. Azure仮想マシン(CentOS 7)のStandardデ…
PAGE TOP