読者です 読者をやめる 読者になる 読者になる

nginxをフォアグラウンドで起動してる時に screenやらターミナルのウィンドウのサイズ変えるとSIGWINCH飛んできて死ぬ => 加筆修正いれました

加筆修正しました

リクエストを落とさずにnginxをアップグレードする方法とその検証 | cloudrop によると nginxはSIGWINCH(と他のシグナル)をうまいこと使ってプロセスを世代交代することができるんですね

フォアグラウンドで動作させる際は気をつけよう

一番最初に書いた内容

$ sudo /usr/local/sbin/nginx -g 'daemon off;' -c /etc/nginx.conf

上記の様にnginxをデーモン化しないで起動してリバースプロキシとして動かして遊んでいたら、ふとしたタイミングでnginxが止まる。


その際に下記のようなログを出していた

2011/06/27 21:22:37 [notice] 17812#0: signal 28 (SIGWINCH) received, stop accepting connections
2011/06/27 21:22:37 [notice] 17813#0: signal 28 (SIGWINCH) received, shutting down
2011/06/27 21:22:37 [notice] 17813#0: gracefully shutting down
2011/06/27 21:22:37 [notice] 17813#0: exiting
2011/06/27 21:22:37 [alert] 17813#0: aborting
2011/06/27 21:22:37 [notice] 17813#0: exit
2011/06/27 21:22:37 [notice] 17812#0: signal 20 (SIGCHLD) received
2011/06/27 21:22:37 [notice] 17812#0: worker process 17813 exited with code 0
2011/06/27 21:22:37 [notice] 17812#0: signal 23 (SIGIO) received

一体何がなんだかよく分からない

ググって解決

Ah, I figured it out what it is.  SIGWINCH:  signal is delivered to  
process when its terminal size changes.

screenやターミナルのウィンドウのサイズを変えると SIGWINCH てなシグナルが飛ぶんだそうで、それでnginxが墜落するようです。やってみたら確かに再現します。

これはシカトしちゃってくれた方がいい挙動な気が