Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
difference-between-nginx-and-apache
Search
hiroaki
July 25, 2022
89
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
difference-between-nginx-and-apache
hiroaki
July 25, 2022
More Decks by hiroaki
See All by hiroaki
leadership-that-endures-book-lt
hiroaki_u
0
29
プロダクト負債に立ち向かう
hiroaki_u
2
2k
pdm_vibe_coding_fail.pdf
hiroaki_u
0
210
Communication with Ubiquitous Language
hiroaki_u
0
110
how to determine architecture
hiroaki_u
1
280
the-concept-of-product-creation-learned-in-startup-science
hiroaki_u
0
180
what-is-container
hiroaki_u
1
120
CI_CD_by_Code_Brothers_by_AWS
hiroaki_u
0
58
think of study
hiroaki_u
1
120
Featured
See All Featured
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
980
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
[SF Ruby Conf 2025] Rails X
palkan
2
1.2k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
New Earth Scene 8
popppiees
3
2.4k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
360
It's Worth the Effort
3n
188
29k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
280
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
220
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
510
Transcript
Nginx & Apache 何が違うのか? hiroaki
Who am I ? 名前:hiroaki 技術:PHP/ Laravel, AWS 年齢:27歳 歴 :11ヶ月半
そもそもNginxとApacheって何?
Nginx Apache Webサーバー 例えば、Webページを返してくれる
そもそもなんでNginxとApache?
2021年12月Webサーバシェア Nginx (32.9%) Apache (31.6%) https://news.mynavi.jp/techplus/article/20211203-2211535/ 引用『TECH+ マイナビニュースより』
Nginx & Apache 何が違うのか?
Nginxの方が 同時大量接続に対応できる
ポイントは C10K(Client 10,000)問題 「 ハードウェアの性能上は問題がなくても,あまりにもク ライアントの数が多くなるとサーバがパンクする問題の こと」をC10K問題と定義しています。 https://gihyo.jp/dev/clip/01/orangenews/vol38/0006 『引用:技術評論者ブログより』
そもそものプログラム処理のお話 スレッド1 プロセス1 コア CPU メモリ スレッド2 プロセス2 スレッド1 コア
コア
処理が多くなると。。。 コア CPU メモリ コア コア ・・・ 処理待ち
・そもそもプロセス数に上限がある ・コンテキストスイッチに負荷がかかる プロセスが多くなることは何が問題? https://knowledge.sakura.ad.jp/24148/ 『引用:さくらのナレッジより』 ・ファイルディスクリプタの上限に達する
Apacheの処理の種類は大きく2つ preforkモデル workerモデル ※event駆動モデルは一旦置いてます コントローラープ ロセス 子プロセス 子プロセス 子プロセス コントローラープ
ロセス
accept() read() write() TCP接続をOSから受け取る クライアントから送信されるリクエストを読み込む プロセス2 スレッド1 クライアントにレスポンスを送信する ~~~ HTTPヘッダの解析やコンテンツ作成~~~
~~~ ログを取る等様々な処理 ~~~ HTTPの場合のスレッドをざっくり
コントローラープ ロセス 子プロセス 子プロセス 子プロセス preforkモデル プロセス数 = 接続数(スレッドは1つ) アクセス
preforkモデル スクリプト言語が組み込める メモリの使用効率が悪い 処理速度がworkerに比べて速い CPU負荷が高い コンテキストスイッチのオーバーヘッドが増加
workerモデル コントローラープ ロセス アクセス 1つのスレッドにつき、1つの接続
workerモデル スクリプト言語が組み込めない メモリがpreforkより効率的 コンテキストスイッチのオーバーヘッドが増加
Apacheは接続の分だけ、 スレッドやプロセスが増えてしまう ではNginxは? プロセスの数が限定されている ※大体CPUのコアの数です。
1つのプロセスが複数のアクセスを同時処理 マスタープロセス ワーカープロセス ワーカープロセス ワーカープロセス
ポイントはイベント駆動&I/Oの仕組み accept() read() write() 終わったから次 終わったから次
処理中のブロックがない accept() read() write() 終わったから次 終わったから次 accept() read() 終わるまでこっち ①
② ① ②
Nginxの特徴 処理が速い(軽量) 大量のアクセスを処理することが可能 重たい処理が苦手 (重たい処理の場合プロセスがブロックされてしまうみたいです)
Nginxはロードバランサーや リバースプロキシとしても利用できる
ApacheとNginxを比較 ・軽い処理が得意 ・重たい処理も可能 Nginx Apache ・大量処理が得意 ・大量処理は苦手 ・開発元が営利企業 ・開発元がコミュニティ ・イベント駆動
・マルチスレッド (orプロセス) どちらもオープンソース
References ・C10K問題 https://gihyo.jp/dev/clip/01/orangenews/vol38/0006 Books Web Sites ・Nginx 実践入門 ・HTTP Serverのプロセス構造
http://itdoc.hitachi.co.jp/manuals/link/cosmi_v0950/03Y1830D/EY180028.HTM ・Apache/Nginx https://milestone-of-se.nesuke.com/sv-basic/linux-basic/apache-mpm-prefork-worker-event/ ・プロセス/スレッド https://shinpeim.github.io/process-book/002.md/ https://knowledge.sakura.ad.jp/24148/ https://openstandia.jp/pdf/140228_osc_seminar_ssof8.pdf etc.
ご清聴ありがとうございました。