LINEで現役エンジニアに直接質問してみよう!登録無料

並行処理の一番単純「プロセスベース方式」とは?Apache MPM prefork を例に解説

Webサーバーは1台で複数のリクエストを同時に処理をします。この事を「並行処理」といいます。並行処理をするため、Webサーバーで実装するモデルには複数あって、今回は一番簡単な構造を解説します。

並行処理の一番単純「プロセスベース方式」

Apacheの MPM Prefork で使われているマルチプロセスモデルです

「prefork」は「pre(前もって) + fork(分ける)」のから来ています。名前の通り、リクエストを処理する前に予めプロセスを一定数forkしておくことで、リクエストが来ても高速で処理することが出来ます。また、リクエストごとにプロセスが分かれているので、なにかの影響でプロセス内にエラーが発生しても他のリクエストに影響することが有りません。なので、安定した通信を行うことが出来ます。

しかし、プロセスモデル上、1000のリクエストが同時に来たら1000個のプロセスが必要になります。実装が最も簡単ですが、プロセスを生成するのには多くのメモリを使うため、アクセス数が多くなると大量のメモリを必要とします。

具体的に計算してみましょう。例えば、1プロセス100MBのメモリを消費するとして、1000同時アクセスされると、100MB ✕ 1000 = 10GBもの物理メモリが必要です。

この記事を書いた人

自身がプログラミングを独学で勉強し始めて躓いた経験を元に、これから勉強をする人に向けに「イラスト多めでわかりやすい記事」にこだわって情報を発信しています。

現在はフルスタックエンジニアとしてサービス開発などのお仕事をしています。