タグ

ブックマーク / qiita.com/cubicdaiya (2)

  • nginxソースコードリーディング その4〜コアAPI(メモリプール)〜 - Qiita

    CのようにGCを持たない言語ではヒープから確保したメモリの開放はプログラマの責任で行う必要がある。しかし、実際にCやC++でプログラミングしたことがあるならわかるように確保したメモリを適切なタイミングで解放するのはとても難しいとまでは言わないまでもあまり簡単なことではない。 単にfreeを呼び出すのを忘れたり、もしくはリストやツリーのような少しでも複雑なデータ構造を扱う際に割り当てられたメモリを適切に解放できずにリークしてしまうようなことは普通に起こりうる。 モダンなOSではプログラム終了後にそのプログラムに割り当てられたメモリをOS側で解放してくれるので、走らせてすぐ終了するようなプログラムではこのようなメモリリークは特に問題にならないこともあるが、nginxのように常時動き続けるようなソフトウェアでのメモリリークは致命的な問題を引き起こす。 Cプログラムでこの問題に対処するためのアプロ

    nginxソースコードリーディング その4〜コアAPI(メモリプール)〜 - Qiita
  • nginxソースコードリーディング その0〜まえがき〜 - Qiita

    mruby_nginx_moduleやngx_small_lightを開発していることもあってnginxのソースコードを読むことはよくあるんだけど、これまではほとんどの場合とある機能のバグっぽい挙動を追っかけたり、拡張モジュールを書くのに行き詰ってコアAPIの実装や公式のモジュールのソースコードを参照したりと必要に応じてその都度断片的に読んでいた。 逆にnginxの全体像やアーキテクチャについてはまぁ、マルチプロセスで動くとかイベント駆動アーキテクチャでノンブロッキング・非同期I/Oを駆使してるとかは知ってるし、実際にある程度読んだこともあるけど、がっつり読んだことがあるわけではないのでnginx内部でこれらの仕組みがどのように実現されているのかはざっくりとしか理解していなかった。なので今回はそのあたりを理解するためによりコアな部分のコードを読んでいこうと思う。 nginxソースコードリー

    nginxソースコードリーディング その0〜まえがき〜 - Qiita
  • 1