不器用(TOT) エンジニアの気ままにプログラミング

~考え、作って、また考える~

Apacheの再起動

超基本的なことかもしれないが、Apacheの再起動の際、

「restart」を用いていたが、「graceful」を用いるべきであると知りました。

 

<参考:Apacheドキュメント>

Apache HTTP Server の停止と再起動 - Apache HTTP サーバ バージョン 2.4

 

上記の参考サイトの中で、「graceful」に関して、部分引用。

graceful シグナルを受け取ると、子プロセスに現在のリクエストの処理の後に終了する (あるいは何もしていなければすぐに終了する) ように助言します。

〜(中略)〜 子プロセスが徐々になくなるに従って、 新しい世代の設定による子プロセスに置き換えていきます。 そして、これらが新たなリクエストに即座に応答し始めます。

 

また、「restart」に関しても部分引用。

restart シグナルを親プロセスに送ると、 子プロセスを kill しますが、 親プロセスは終了しません。

 

読んだだけだと、最初はわからないかもしれません。

まず、上記を理解するための前提として、

「親プロセスが必要に応じて(リクエストに応じて)、子プロセスを作成している」

ということを把握しておく必要があるようです。

※これはApache MPM(Multi Processing Module)でググると良いです。

 

Apache MPMのことをサッと調べ、会社で教えてもらったことをまとめると、

個人的には、Apache再起動に関しては、下記の認識。

「graceful」・・・アクセスされている子プロセスはアクセス終了後に設定を反映

「restart」・・・・アクセスに関わらず子プロセスを終了して設定を反映