WEBサーバーとは
Webサイトなどのブラウザから最初に接続されるサーバーで、リクエストに応じてホームページのデータをブラウザに送ってくれるサーバーのことです。
このやり取りにはHTTPと呼ばれる通信規約(プロトコル)が使用されます。
代表的なものにNginxとApacheがあります。この2つで世界シェア約65%を占めています。次いでCloudflare, LiteSpeed, Microsoft-IISが世界シェアの高いものになります。
今回はApacheとNginxについて人に説明できるくらいには知っておこうと思い調べてみました。
Apacheとは
古くから利用されているWEBサーバーで正式には「Apache HTTP Server」と言います。
無償で利用できるオープンソースで高い安定性と信頼性、情報の多さ、動作の軽さから人気を集めています。ただ同時処理数が多くなるとメモリ消費が高くなってしまいます。(詳しくは後述)
Apacheではhttpd.confファイルに設定を記述します。
Nginxとは
特徴としては高い処理能力や並行処理能力を持ち、メモリ消費が少ないことが挙げられます。そもそもNginxはApacheの大量に同時接続があるとメモリを大量に使用してサーバーがパンクするという弱点を克服することを目的として設計されています。
Apacheに対して重たいデータの扱いには向いておりません。
nginx.confに設定を記述します。
C10K問題
C10K(クライアント1万台問題)とは同時接続するクライアントが多すぎるとサーバーがパンクしてしまうことです。
Apacheの場合、1つのリクエストに対して1つのプロセスで対応します。約3万リクエストが最大同時接続数となります。対してNginxは1プロセスで複数のリクエストに対応します。
なぜ1万台かというと1万台前後を目安に性能が下がってくるからだそうです。
ApacheとNginxの比較
- 処理能力 Nginxの方が高い
- 同時接続数 Nginxの方が高い
- 動的コンテンツ Apacheの方が得意
- メモリ消費 同時処理数が増えるとApacheの方が多くメモリが消費される
Apacheは少量の同時接続数で重い処理を担当させ、Nginxには大量の同時接続数や軽い性的コンテンツを担当させるのが良さそうです。