π[Web] μΉ μλ²λ [Apache, Nginx]
μΉ μλ²λ?
νν μ°λ¦¬κ° μΉμλ²λΌκ³ νλ©΄ λ€μ λκ°μ§ μ€ νλλ₯Ό μλ―Έν¨.
- μννΈμ¨μ΄μ κ΄μ
- λΈλΌμ°μ μ κ°μ ν΄λΌμ΄μΈνΈλ‘λΆν° http μμ²μ λ°κ³ , html λ¬Έμμ κ°μ μΉ νμ΄μ§λ₯Ό λ°ννλ
μ»΄ν¨ν° νλ‘κ·Έλ¨
- νλμ¨μ΄μ κ΄μ
- μννΈμ¨μ΄μ κ΄μ μμ λμνλ κΈ°λ₯μ μννλ
물리μ μ»΄ν¨ν°
Apache(μνμΉ)
μνμΉ
λ μνμΉ μννΈμ¨μ΄ μ¬λ¨μμ κ°λ°νκ³ κ΄λ¦¬νλ λ¬΄λ£ http μΉ μλ² μννΈμ¨μ΄μ.
κΈ°λ³Έμ μΈ λμ λ°©μμ μ¬μ©μμ httpμμ²μ΄ μ¬ λλ§λ€ νλ‘μΈμ€λ μ€λ λλ₯Ό μλ‘ μμ±ν¨.
λ¨μΌ μμ² - λ¨μΈ μ€λ λ/νλ‘μΈμ€
μ΄λ―λ‘, μ¬μ©μμ μμ²μ΄ λ§μμ§ μλ‘ λ©λͺ¨λ¦¬λ₯Ό λ§μ΄ μ°¨μ§νλ€λ λ¨μ μ΄ μλ€.
κ·Έλ¬λ€λ³΄λ©΄, νλμ CPUκ° μ¬λ¬ νλ‘μΈμ€λ₯Ό 맑μ μ²λ¦¬ν΄μΌ νλ―λ‘ λΆνκ° λ§μμ§ μκ° μλ€.
Apache λμ λ°©μ
Prefork MPM(Multi Processing Module)λ°©μ
- http μμ²μ΄ μ¬ λλ§λ€ νλ‘μΈμ€λ₯Ό 맀λ²
볡μ
ν΄μ νλ‘μΈμ€μμ μ±κΈ μ€λ λλ‘ μ¬μ©μ μμ²μ μ²λ¦¬ν¨.- μ¬μ©μ μμ² = νλ‘μΈμ€ κ°μ
Worker MPMλ°©μ
ν κ°μ νλ‘μΈμ€κ° μ¬λ¬ μ€λ λλ₯Ό μμ±
νμ¬ ν΄λΉ HTTP μμ²μ μ²λ¦¬νλ―λ‘ Prefork λ°©μλ³΄λ€ λ©λͺ¨λ¦¬ μλͺ¨κ° μ μ
.
νμ§λ§ λ©ν° μ€λ λ λ°©μμ CPU μ€μΌμ€λ§μ μν μ²λ¦¬ μκ°κ³Ό λ¬Έλ§₯ μ ν λΉμ©μ΄ λ°μνλ λ¨μ μ΄ μλ€.
μ€λ λλ₯Ό λΆλ°°νκΈ° μν΄ μ¬μ©λλ CPU μ€μΌμ€λ§μ λν μ°μ° μμ
κ³Ό μ°λ λ κ°μ μ νμ μν΄ μ ννκΈ° μ§μ μ μ°λ λλ₯Ό λμ€μ 볡κ·μν¬ λλ₯Ό λλΉνμ¬
μνλ₯Ό μ μ₯ν΄λκΈ° μν CPU μ°μ° μμ
μΌλ‘ μΈν΄ μ€λ λκ° λ§μμ§μλ‘ μ±λ₯ μ νκ° λ°μν¨.
Nginx(μμ§μμ€)
Nginx
λ μΉ μλ² μννΈμ¨μ΄
μ΄λ€.
μ¬μ©μ μμ²μ μλ΅νκΈ° μν΄ λΉλκΈ° μ΄λ²€νΈ
κΈ°λ°μ ꡬ쑰λ₯Ό κ°μ§λ€.
λΉλκΈ° μ΄λ²€νΈ
httpμμ²μ΄ μ μ²κ°μ κ°μ΄ λ§μ΄ λ€μ΄μλ μ ν΄μ§ μμ νλ‘μΈμ€κ° μ΄ μμ²λ€μ μ΄λ²€νΈλ‘ λ±λ‘νκ³ λΉλκΈ° λ°©μμΌλ‘ λκΈ°μμΌ μλ£λλ μμ²λΆν° μ²λ¦¬(μλ΅)ν΄μ£Όλ κ²μ λ§ν¨.
Nginx λμ λ°©μ
NGINXμμλ 컀λ₯μ
μμ± λ° μ»€λ₯μ
μ κ±°, κ·Έλ¦¬κ³ μλ‘μ΄ μμ²μ μ²λ¦¬νλ κ²μ μ΄λ²€νΈ
λΌκ³ λΆλ₯Έλ€.
μ΄ μ΄λ²€νΈλ€μ OS컀λμ΄ ν νμμΌλ‘ worker νλ‘μΈμ€μκ² μ λ¬ν΄μ£Όκ³ , μ΄λ²€νΈκ° νμ λ΄κΈ΄ μνμμ worker νλ‘μΈμ€κ° μ²λ¦¬ν λκΉμ§ λΉλκΈ° λ°©μμΌλ‘ λκΈ°νλ€.
κ·Έλ¦¬κ³ μ컀 νλ‘μΈμ€λ νλμ μ€λ λλ‘ μ΄λ²€νΈλ₯Ό κΊΌλ΄μ μ²λ¦¬ν΄ λκ°λ€.
μ΄λ κ² λλ©΄ μ컀 νλ‘μΈμ€κ° μ΄νμμ΄ μΌνκΈ° λλ¬Έμ μνμΉ μλ²μμ μμ²μ΄ μλ€λ©΄ λ°©μΉλλ νλ‘μΈμ€λ³΄λ€ μλ² μμμ λ ν¨μ¨μ μΌλ‘ μΈ μ μκ² λλ κ²μ΄λ€.
κ·Έλ¬λ λ€λͺ¨ μΉΈ(ν)μ μλ μμ²(μ΄λ²€νΈ) μ€ νλκ° μκ°μ΄ μ€λ걸리λ μμ
(ex. Disk I/O)μ΄λ©΄ μ΄λ»κ² λ κΉ?
κ·Έ λ€μ μλ μ΄λ²€νΈλ μμ²μ μ²λ¦¬νλ κΈ΄ μκ°λμ λΈλ‘νΉμ΄ λλ€.
κ·Έλμ NGINXλ μκ°μ΄ μ€λ 걸리λ μμ
μ λ°λ‘ μννλ μ€λ λ ν(Thread Pool)μ λ§λ€μ΄λκ³ ,
μ컀 νλ‘μΈμ€λ μ§κΈ μ²λ¦¬ν μμ²μ΄ μκ°μ΄ λ§μ΄ 걸릴 κ² κ°λ€λ©΄ μ€λ λ νμ κ·Έ μ΄λ²€νΈλ₯Ό μμνκ³ ν μμ μλ λ€λ₯Έ μ΄λ²€νΈλ₯Ό μ²λ¦¬νλ¬ κ°κ² λλ€.
λκΈλ¨κΈ°κΈ°