Archive for 9月 2013

nginxとapacheはどちらを使うべきか?4

あまり放置するのも何だと思ってFF14のログイン待ち時間に書こうと思ったら今日は一発でログインできたでござるの巻

ネットワークの話に移ろうかと思っていたのだが、時間が空いたのと他のサイトで書かれている事で気になった点を簡単に書こうかと。

ブロッキングとノンブロッキングの話ですが、私が前回書いたセマフォの観点でいう「ここは同時処理しちゃ駄目ブロック」と違う観点で捉えている人もいるようです。
webの同期通信と非同期通信のブロッキングとノンブロッキングで捉えているようですが、これは違うんじゃないでしょうかねぇ?
マルチスレッドプログラミングをした事がある人は分かりますが、スレッド=関数です。
windowsもlinuxもスレッド生成APIは関数を別スレッドとして動かすものです。
別スレッドとして動かした処理が終わるまで待つのがブロッキング!!
え?それってスレッドじゃなくて普通に関数呼ぶでしょ?

という事で、大なり小なりの差はあれどnginxもapacheも私の書いていたブロッキングは発生するハズですね。
例えばログを書くとしたら、ファイル管理はOSの機能です。
OSの機能としてファイルロックが提供されていますので、書き込みの為にロックする=ブロッキングが発生します。
まぁこういう部分は置いといて、スタックメモリを使う部分を考慮しながら作られてるからnginxはブロッキングが少ないと言われてるんでしょう。
ソースを見た訳じゃないので事実かは知らんけど。

では新生エオルゼアへ旅立とうノシ