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


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

😼 マルチプロセス

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

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

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

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

👽 マルチスレッド

後日記載予定。

🍄 イベント駆動

後日記載予定。

🏈 参考リンク

📚 おすすめの書籍

🖥 サーバについて

このブログでは「Cloud Garage」さんのDev Assist Program(開発者向けインスタンス無償提供制度)でお借りしたサーバで技術検証しています。 Dev Assist Programは、開発者や開発コミュニティ、スタートアップ企業の方が1GBメモリのインスタンス3台を1年間無料で借りれる心強い制度です!(有償でも1,480円/月と格安)