並列処理(マルチプロセス、マルチスレッド、イベント駆動)


Webサーバが並列処理を行う手法には「マルチプロセス、マルチスレッド、イベント駆動」の3つがあります。

😼 マルチプロセス

リクエストを並行で処理するために、プロセスをforkして子プロセスを生成し、処理を子プロセスに任せます。

マルチプロセス
参考元:知っているようで知らないWebサーバアーキテクチャ

forkではメモリ上のアドレス空間をそのままコピーすると遅くなるため、CoW(Copy On Write)でメモリコピーの負荷を抑えます。CoWはfork時に子プロセスの仮想アドレス空間に親プロセスのアドレスをマッピングして、親子でアドレスを共有します。

都度forkするのではなく、事前にfork(prefork)して使いまわすことで限られたマシンリソースを有効活用したり、立ち上げの負荷を下げることができる。メモリの消費量は大きい。

🎃 マルチスレッド

後日記載予定。

🚜 イベント駆動

後日記載予定。

🐯 参考リンク

📚 おすすめの書籍