Closed ayase-mstk closed 3 months ago
killするときに送るシグナルをSIGKILLからSIGTERMに変更しました。これはtestの中でwebservがSIGKILLだとうまく子プロセスをkillできていなかったからです。 これは不確かですが、SIGKILLは端末が紐づけられていないと機能しないのかもしれません。 Linuxプログラミングインターフェースを読む限りでもSIGTERMの方がプロセスをkillするシグナルとしては一般的なようです。
timeoutしたのがcgiだった場合に、killしたプロセスをwaitして回収するようにしました。 いまはhandleTimeoutEventの方だけで行っているのですが、本来はworker_connectionsでプロセスをkillしたときも回収しないとなので、ほかのところでまとめてwaitpidするように変更するかもしれません。例えばServerのloopの最後とか? そのプロセスが少しオーバーヘッドを生み出しそうで懸念しています。
504エラーレスポンスが返せていなかったので返すようにしました。 server_res_testにもcgiがタイムアウトしたときに504を返すテストを追加しました。
cgi のテストがfailしているようです。
そのようですね。正直原因はなぞです。clearResData()を消しただけでなぜこのようになるのか、、、
killするときに送るシグナルをSIGKILLからSIGTERMに変更しました。これはtestの中でwebservがSIGKILLだとうまく子プロセスをkillできていなかったからです。 これは不確かですが、SIGKILLは端末が紐づけられていないと機能しないのかもしれません。 Linuxプログラミングインターフェースを読む限りでもSIGTERMの方がプロセスをkillするシグナルとしては一般的なようです。
timeoutしたのがcgiだった場合に、killしたプロセスをwaitして回収するようにしました。 いまはhandleTimeoutEventの方だけで行っているのですが、本来はworker_connectionsでプロセスをkillしたときも回収しないとなので、ほかのところでまとめてwaitpidするように変更するかもしれません。例えばServerのloopの最後とか? そのプロセスが少しオーバーヘッドを生み出しそうで懸念しています。
504エラーレスポンスが返せていなかったので返すようにしました。 server_res_testにもcgiがタイムアウトしたときに504を返すテストを追加しました。