Man page of CHIKU_WAIT(2)

Sinntyokuだめです

雰囲気でNginxのモジュール書いてみた

作るまでの流れ

今、GMOペパボ株式会社の福岡支社でインターンをしています、chikuwaitです。ペパボ研究所の松本 亮介 / まつもとりー (@matsumotory) | Twitterさんとry's boot campという三日間たのしいたのしいことをしていました。まつもとりーさんとどんなことしてたのかというと、WEBサーバ全般の座学とか、Nginxを触ったりという感じのことをしてました。

 

全体的な流れとしてはこんな感じ。
1日目:Webサーバの基礎から代表的なWebサーバ実装、モジュールハンズオン

2日目:Webサーバのマルチプロセスやスレッド、レースコンディションの話、開発

3日目:退勤までにNignxのモジュールを雰囲気で頑張って書く

 

何作ったの

github.com

 Ngx_memory_leak_killerというnginxのメモリ最大使用量が上限値を超えたら自動でプロセスをgraceful restartするnginxモジュールを作りました。実際のサービスでメモリリークが発生している問題があり、その解決として上限値を超えたらrestartするモジュールを作成しました。

 

どう作ったの

github.com

これを参考にして作っています。

処理の流れとしては

1.Worker processのpidを取得する

2.上限値とgetusageして取得した物理メモリの最大使用量の比較する

3.上限値を超えていたらgraceful restartする

という流れ。

使い方

使い方はいたって単純で、READMEの通り

nginx.confをこのように設定をします。

http {
    memory_leak_killer on;
    memory_leak_killer_limit 5000; #5MB
    ...
}

memory_leak_killer_limitにキロバイト単位で上限を指定すると、その上限を超えた時にgraceful restartします。

感想

今までNginxを食わず嫌いしていたので、とても楽しかった(こなみかん)。折角モジュールを書いたのでこれからもモジュールを色々書いて楽しんでいきたい 。普段一人で書いていて品質とかテストを余り考えないでいたけど、初めてしっかりとそこら辺を教えてもらいながら意識することができた。これからもそこら辺の意識をしながら開発していきたいと思った。