WSGI рд╕рд░реНрд╡рд░ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг: рднрд╛рдЧ рджреЛ

рдпрд╣ рд▓реЗрдЦ рдХреЗрд╡рд┐рди рдЧреЛрд▓реНрдбрдмрд░реНрдЧ рдХреЗ рд▓реЗрдЦ "рдкрд╛рдпрдерди WSGI рд╕рд░реНрд╡рд░ рдХрд╛ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг: рднрд╛рдЧ 2" dzone.com/articles/a-performance-analysis-of-python-wsgi-servers- рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЗ рд╕рд╛рде рдЕрдиреБрд╡рд╛рдж рд╣реИред

рдЫрд╡рд┐

рдкрд░рд┐рдЪрдп


рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ , рдЖрдк WSGI рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ WSGI рдФрд░ рдЫрд╣ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рд░реНрд╡рд░реЛрдВ рд╕реЗ рдорд┐рд▓реЗ рдереЗред рдЗрд╕ рднрд╛рдЧ рдореЗрдВ, рдЖрдкрдХреЛ рдЗрди рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкрд░реАрдХреНрд╖рдг рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдкреНрд░рддрд┐рдпреЛрдЧрд┐рдпреЛрдВ


рд╕рдордп рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг, рдЕрдиреБрд╕рдВрдзрд╛рди рдЫрд╣ WSGI рд╕рд░реНрд╡рд░реЛрдВ рддрдХ рд╕реАрдорд┐рдд рдерд╛ред рдЗрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рднреА рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ GitHub рдкрд░ рд╣реЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред рд╢рд╛рдпрдж рд╕рдордп рдХреЗ рд╕рд╛рде, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реЛрдЧрд╛ рдФрд░ рдЕрдиреНрдп WSGI рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рд▓реЗрдХрд┐рди рдЕрднреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдЫрд╣ рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ:

  1. Bjoern рдЦреБрдж рдХреЛ "рдЕрд▓реНрдЯреНрд░рд╛-рдлрд╛рд╕реНрдЯ WSGI рд╕рд░реНрд╡рд░" рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рджрд╛рд╡рд╛ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ "рд╕рдмрд╕реЗ рддреЗрдЬрд╝, рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рдФрд░ рд╕рдмрд╕реЗ рд╣рд▓реНрдХрд╛ WSGI рд╕рд░реНрд╡рд░" рд╣реИред рд╣рдордиреЗ рдПрдХ рдЫреЛрдЯрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрдирд╛рдпрд╛ рдЬреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
  2. рдЪреЗрд░реАрдкреА рдПрдХ рдЕрддреНрдпрдВрдд рд▓реЛрдХрдкреНрд░рд┐рдп рдФрд░ рд╕реНрдерд┐рд░ рдврд╛рдВрдЪрд╛ рдФрд░ рдбрдмреНрд▓реВрдПрд╕рдЬреАрдЖрдИ рд╕рд░реНрд╡рд░ рд╣реИред рдЗрд╕ рдЫреЛрдЯреА рд╕реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдорд╛рд░реЗ рдирдореВрдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪреЗрд░реАрдкреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред
  3. рдЧреБрдирд┐рдХреЙрд░реНрди рд░реВрдмреА рдХреЗ рдпреВрдирд┐рдХреЙрд░реНрди рд╕рд░реНрд╡рд░ (рдЗрд╕рд▓рд┐рдП рдирд╛рдо) рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдерд╛ред рд╡рд╣ рд╡рд┐рдирдореНрд░рддрд╛ рд╕реЗ рджрд╛рд╡рд╛ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ "рдмрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рди рдФрд░ рдХрд╛рдлреА рддреЗрдЬ рд╣реИред" Bjoern рдФрд░ CherryPy рдХреЗ рд╡рд┐рдкрд░реАрдд, Gunicorn рдПрдХ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рд╕рд░реНрд╡рд░ рд╣реИред рд╣рдордиреЗ рдЗрд╕реЗ рдЗрд╕ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рд╣реИред рдкреИрд░рд╛рдореАрдЯрд░ "WORKER_COUNT" рдЙрдкрд▓рдмреНрдз рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджреЛрдЧреБрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдкреНрд▓рд╕ рдПрдХред рдпрд╣ Gunicorn рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
  4. Meinheld рдПрдХ рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди рд╡рд╛рд▓рд╛ WSGI- рд╕рдВрдЧрдд рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╣реИ рдЬреЛ рд╣рд▓реНрдХреЗ рд╣реЛрдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдХрд░рддрд╛ рд╣реИред рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдЯ рдкрд░ рджрд┐рдЦрд╛рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдордиреЗ рдЕрдкрдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдпрд╛ред
  5. mod_wsgi рдХреЛ рдПрдХ рд╣реА рдирд┐рд░реНрдорд╛рддрд╛ рджреНрд╡рд╛рд░рд╛ mod_python рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ ред Mod_python рдХреА рддрд░рд╣, рдпрд╣ рдХреЗрд╡рд▓ Apache рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдореЗрдВ "mod_wsgi рдПрдХреНрд╕рдкреНрд░реЗрд╕" рдирд╛рдордХ рдПрдХ рдЙрдкрдХрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреЛ рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рд╕рдВрднрд╡ рдЕрдкрд╛рдЪреЗ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддрд╛ рд╣реИред рд╣рдордиреЗ рдЗрд╕ рдЖрджреЗрд╢ рдХреЗ рд╕рд╛рде mod_wsgi рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред Gunicorn рд╕реЗ рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ mod_wsgi рдХреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдИ рд╢реНрд░рдорд┐рдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдмрд╛рд░ рдЯреНрдпреВрди рдХрд┐рдпрд╛ред
  6. uWSGI рдПрдХ рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╡рд╛рд▓рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рд╣реИред рдЖрдорддреМрд░ рдкрд░, uWSGI рдХреЛ рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: Nginx)ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреНрд░рддреНрдпреЗрдХ рд╕рд░реНрд╡рд░ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдмреЗрд╣рддрд░ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдХреЗрд╡рд▓ рдирдВрдЧреЗ рд╕рд░реНрд╡рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрд▓рдмреНрдз рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХреЗ рд▓рд┐рдП рджреЛ рд╢реНрд░рдорд┐рдХреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ред

рдмреЗрдВрдЪрдорд╛рд░реНрдХ


рдкрд░реАрдХреНрд╖рдг рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рдЙрджреНрджреЗрд╢реНрдпрдкреВрд░реНрдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╛рдХреА рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рддрд╣рдд рд╕рд░реНрд╡рд░ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдиреЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рд╣рд░ рд▓реЙрдиреНрдЪ рдЦрд░реЛрдВрдЪ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред

рд╕рд░реНрд╡рд░:


  • рдПрдХ рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдкреГрдердХред
  • 2 рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдП рдЧрдПред
  • рдХрдВрдЯреЗрдирд░ рдХреА рд░реИрдо 512 рдПрдордмреА рддрдХ рд╕реАрдорд┐рдд рдереАред

рдкрд░реАрдХреНрд╖рдг:


  • wrk , рдПрдХ рдЖрдзреБрдирд┐рдХ HTTP рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рдЯреВрд▓, рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛ред
  • рд╕рд░реНрд╡рд░ рдХреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреНрд░рдо рдореЗрдВ 100 рд╕реЗ 10,000 рддрдХ рдХреА рд╕реАрдорд╛ рдореЗрдВ рдПрдХ рд╕рд╛рде рдХрдиреЗрдХреНрд╢рди рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
  • рдбреЙрдХ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рджреЛ рд╕реАрдкреАрдпреВ рдХреЛрд░ рддрдХ wrk рд╕реАрдорд┐рдд рдерд╛ред
  • рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг 30 рд╕реЗрдХрдВрдб рддрдХ рдЪрд▓рд╛ рдФрд░ 4 рдмрд╛рд░ рджреЛрд╣рд░рд╛рдпрд╛ рдЧрдпрд╛ред

рдореАрдЯреНрд░рд┐рдХ:


  • рд▓рдЧрд╛рддрд╛рд░ рдЕрдиреБрд░реЛрдзреЛрдВ, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рджреЗрд░реА рдХреА рдФрд╕рдд рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд░реЗрдХ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
  • рдбреЙрдХрд░ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд, рдирд┐рдЧрд░рд╛рдиреА рдиреЗ рд╕реАрдкреАрдпреВ рдФрд░ рд░реИрдо рдЙрдкрдпреЛрдЧ рд╕реНрддрд░реЛрдВ рдХреЛ рджрд┐рдЦрд╛рдпрд╛ред
  • рдЙрдЪреНрдЪрддрдо рдФрд░ рдирд┐рдореНрдирддрдо рд░реАрдбрд┐рдВрдЧ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛, рдФрд░ рд╢реЗрд╖ рдорд╛рдиреЛрдВ рдХреЛ рдФрд╕рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ред
  • рдЬрд┐рдЬреНрдЮрд╛рд╕реБ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдЧрд┐рдЯрд╣рдм рдХреЛ рдкреВрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднреЗрдЬреАред

рдкрд░рд┐рдгрд╛рдо


рд╕рднреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рджрд░реНрд╢рди рд╕рдВрдХреЗрддрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдЧрдП рдереЗ , рдФрд░ рдПрдХ рд╕рд╛рд░рд╛рдВрд╢ рд╕реАрдПрд╕рд╡реА рдлрд╝рд╛рдЗрд▓ рднреА рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдереАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП, рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ Google- doc рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдмрдирд╛рдП рдЧрдП рдереЗред

рдЖрд░рдкреАрдПрд╕ рдмрдирд╛рдо рдПрдХ рд╕рд╛рде рдХрдиреЗрдХреНрд╢рди рдХреА рд╕рдВрдЦреНрдпрд╛


рдпрд╣ рдЧреНрд░рд╛рдл рд╕рдорд╡рд░реНрддреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдФрд╕рдд рд╕рдВрдЦреНрдпрд╛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ; рдЬрд┐рддрдиреА рдЕрдзрд┐рдХ рд╕рдВрдЦреНрдпрд╛, рдЙрддрдирд╛ рдЕрдЪреНрдЫрд╛ред

рдЫрд╡рд┐

рдЫрд╡рд┐

  • Bjoern: рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╡рд┐рдЬреЗрддрд╛ред
  • рдЪреЗрд░реАрдкреА: рд╢реБрджреНрдз рдЕрдЬрдЧрд░ рдореЗрдВ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рд╡рд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд▓рд╛рдХрд╛рд░ рдерд╛ред
  • Meinheld: рдЙрддреНрдХреГрд╖реНрдЯ рдкреНрд░рджрд░реНрд╢рди рдиреЗ рджреБрд░реНрд▓рдн рдХрдВрдЯреЗрдирд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рджрд┐рдпрд╛ред
  • mod_wsgi: рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рджрд░реНрд╢рди рд▓рдЧрд╛рддрд╛рд░ рдФрд░ рдкрд░реНрдпрд╛рдкреНрдд рдерд╛ред
  • рдЧреБрдирд┐рдХреЙрд░реНрди: рдХрдо рднрд╛рд░ рдкрд░ рдЕрдЪреНрдЫрд╛ рдкреНрд░рджрд░реНрд╢рди, рд▓реЗрдХрд┐рди рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд▓рдбрд╝рд╛рдИ рд╣реИред
  • uWSGI: рдЦрд░рд╛рдм рдирддреАрдЬреЛрдВ рд╕реЗ рдирд┐рд░рд╛рд╢

рд╡рд┐рдЬреЗрддрд╛: рдмрдЬрд╝рд░реНрди

рдЬреЛрдПрд░реНрди


рдирд┐рд░рдВрддрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ, рдмреЛрдЬрд╝рд░реНрди рд╕реНрдкрд╖реНрдЯ рд╡рд┐рдЬреЗрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИ, рд╣рдо рдереЛрдбрд╝реЗ рд╕рд╢рдВрдХрд┐рдд рд╣реИрдВред рд╣рдореЗрдВ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдмреЛрдЬрд╝рд░реНрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрддрдиреА рддреЗрдЬрд╕реНрд╡реА рд╣реИрдВред рдкрд╣рд▓реЗ рддреЛ рд╣рдордиреЗ рд╕рд░реНрд╡рд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрд╛рдиреБрдХреНрд░рдо рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛, рдФрд░ рд╣рдордиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдмреЛрдЬрд╝рд░реНрди рдХреЛ рдЕрдиреБрдЪрд┐рдд рд▓рд╛рдн рдорд┐рд▓рд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд░реИрдВрдбрдо рд╕рд░реНрд╡рд░ рдСрд░реНрдбрд░ рдФрд░ рд░рд┐рдЯрд╛рдпрд░рд┐рдВрдЧ рдореЗрдВ рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рднреА, рдкрд░рд┐рдгрд╛рдо рд╡рд╣реА рд░рд╣рддрд╛ рд╣реИред

uWSGI


рд╣рдо uWSGI рдХреЗ рдХрдордЬреЛрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рдирд┐рд░рд╛рд╢ рдереЗред рд╣рдореЗрдВ рдЙрдореНрдореАрдж рдереА рдХрд┐ рд╡рд╣ рд▓реАрдб рдореЗрдВ рд░рд╣реЗрдВрдЧреЗред рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди, рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ uWSGI рд▓реЙрдЧ рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╢реБрд░реВ рдореЗрдВ рд╣рдордиреЗ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рди рдХреА рдХрдореА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдпрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, " --disable- рд▓реЙрдЧрд┐рдВрдЧ " рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝реЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рднреА, uWSGI рдЕрднреА рднреА рд╕рдмрд╕реЗ рдзреАрдорд╛ рд╕рд░реНрд╡рд░ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ uWSGI рдореИрдиреБрдЕрд▓ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдЖрдорддреМрд░ рдкрд░ Nginx рдЬреИрд╕реЗ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдореЗрдВ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЗрддрдирд╛ рдмрдбрд╝рд╛ рдЕрдВрддрд░ рд╕рдордЭрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╡рд┐рд▓рдВрдм


рд╡рд┐рд▓рдВрдм рдЕрдиреБрд░реЛрдз рдФрд░ рдЙрд╕рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмреАрдЪ рдХрд╛ рд╕рдордп рд╣реИред рдХрдо рд╕рдВрдЦреНрдпрд╛ рдмреЗрд╣рддрд░ рд╣реИред

рдЫрд╡рд┐

  • рдЪреЗрд░реАрдкреА: рднрд╛рд░ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╛рд▓рд╛ред
  • Bjoern: рдЖрдо рддреМрд░ рдкрд░ рдХрдо рд╡рд┐рд▓рдВрдмрддрд╛, рд▓реЗрдХрд┐рди рдХрдо рд╕рдорд╡рд░реНрддреА рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
  • Gunicorn: рдЕрдЪреНрдЫрд╛ рдФрд░ рд╕реБрд╕рдВрдЧрддред
  • mod_wsgi: рдФрд╕рдд рдкреНрд░рджрд░реНрд╢рди, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдПрдХ рд╕рд╛рде рдХрдиреЗрдХреНрд╢рди рднреАред
  • Meinheld: рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рд╕реНрд╡реАрдХрд╛рд░реНрдп рдкреНрд░рджрд░реНрд╢рдиред
  • uWSGI: uWSGI рдлрд┐рд░ рд╕реЗ рдЕрдВрддрд┐рдо рд╕реНрдерд╛рди рдкрд░ рд╣реИред

рд╡рд┐рдЬреЗрддрд╛: рдЪреЗрд░реАрдкреА

рд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ


рдпрд╣ рдореАрдЯреНрд░рд┐рдХ рдореЗрдореЛрд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╕рд░реНрд╡рд░ рдХреА "рд▓рдкрдЯ" рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдХрдо рд╕рдВрдЦреНрдпрд╛ рдмреЗрд╣рддрд░ рд╣реИред

рдЫрд╡рд┐

  • рдмрдЬрд╝рд░реНрди: рдЕрддреНрдпрдзрд┐рдХ рдкреНрд░рдХрд╛рд╢ред рдпрд╣ 10,000 рд╕рдорд╡рд░реНрддреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ 9 рдПрдордмреА рд░реИрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
  • рдореАрдирд▓рд╛рдЗрди: рдмреЛрдЬрд░реНрди рдХреЗ рд╕рдорд╛рдиред
  • рдЧреБрдирд┐рдХреЙрд░реНрди: рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдЙрдЪреНрдЪ рд▓реЛрдб рдХреЗ рд╕рд╛рде рдореБрд╢реНрдХрд┐рд▓ рд╕реЗ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╕реНрдореГрддрд┐ рдХреА рдЦрдкрдд рдХреЗ рд╕рд╛рде рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рддрд╛ рд╣реИред
  • рдЪреЗрд░реАрдкреА: рд╢реБрд░реБрдЖрдд рдореЗрдВ рдереЛрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рд░реИрдо рдХреА рдЬрд░реВрд░рдд рдереА, рд▓реЗрдХрд┐рди рдмрдврд╝рддреЗ рд▓реЛрдб рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рддреЗрдЬреА рд╕реЗ рдмрдврд╝рд╛ред
  • mod_wsgi: рдирд┐рдЪрд▓реЗ рд╕реНрддрд░реЛрдВ рдкрд░, рдпрд╣ рд╕реНрдореГрддрд┐ рдореЗрдВ рд╕рдмрд╕реЗ рддреАрд╡реНрд░ рдерд╛, рд▓реЗрдХрд┐рди рдХрд╛рдлреА рд╕реБрд╕рдВрдЧрдд рд░рд╣рд╛ред
  • uWSGI: рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╣рдо рдЬрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрд╕рдореЗрдВ рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛ рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИред

рд╡рд┐рдЬреЗрддрд╛: рдмрдЬрд╝рд░реНрди рдФрд░ рдореАрдирд▓рд╛рдЗрди

рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛


рд╕рд░реНрд╡рд░ рдХреНрд░реИрд╢ рд╣реЛрдиреЗ, рдпрд╛ рдмрд╛рдзрд┐рдд рд╣реЛрдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдкрд░ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред рдХрдо рдмреЗрд╣рддрд░ рд╣реИред

рдЫрд╡рд┐

рдкреНрд░рддреНрдпреЗрдХ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдХреБрд▓ рдЕрдиреБрдкрд╛рдд рдХреЗ рдЕрдиреБрдкрд╛рдд рдХреА рдЧрдгрдирд╛ рдХреА:

  • рдЪреЗрд░реАрдкреА: рдЕрдзрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде, рддреНрд░реБрдЯрд┐ рджрд░ 0 рдХреЗ рдЖрд╕рдкрд╛рд╕ред
  • Bjoern: рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реБрдИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрд╕рд╛рдзрд┐рдд рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдСрдлрд╕реЗрдЯ рдерд╛ред
  • mod_wsgi: 6% рдХреА рд╕реНрд╡реАрдХрд╛рд░реНрдп рддреНрд░реБрдЯрд┐ рджрд░ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
  • рдЧреБрдирд┐рдХреЙрд░реНрди: 9 рдкреНрд░рддрд┐рд╢рдд рддреНрд░реБрдЯрд┐ рджрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
  • uWSGI: рдХрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдпрд╣ 34 рдкреНрд░рддрд┐рд╢рдд рддреНрд░реБрдЯрд┐ рджрд░ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдЖред
  • Meinheld: рдЙрдЪреНрдЪ рднрд╛рд░ рдкрд░ рдЧрд┐рд░рдирд╛, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдорд╛рдВрдЧ рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди 10,000 рд╕реЗ рдЕрдзрд┐рдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдлреЗрдВрдХрдирд╛ред

рд╡рд┐рдЬреЗрддрд╛: рдЪреЗрд░реАрдкреА

CPU рдЙрдкрдпреЛрдЧ


рдпрджрд┐ рд╕рд░реНрд╡рд░ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рддреЛ рдЙрдЪреНрдЪ CPU рдЙрдкрдпреЛрдЧ рдЕрдЪреНрдЫрд╛ рдпрд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рд╕рд░реНрд╡рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд░реЛрдЪрдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рджреЛ рд╕реАрдкреАрдпреВ рдХреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЕрдзрд┐рдХрддрдо рд╕рдВрднрд╡ рдЙрдкрдпреЛрдЧ 200 рдкреНрд░рддрд┐рд╢рдд рд╣реИред

рдЫрд╡рд┐

  • Bjoern: рдПрдХ рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб рд╕рд░реНрд╡рд░, рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕рдХреЗ 100% рд╕реАрдкреАрдпреВ рдХреЗ рдирд┐рд░рдВрддрд░ рдЙрдкрдпреЛрдЧ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИред
  • рдЪреЗрд░реАрдкреА: рдорд▓реНрдЯреАрдереНрд░реЗрдбреЗрдб, рд▓реЗрдХрд┐рди 150 рдкреНрд░рддрд┐рд╢рдд рдкрд░ рдЕрдЯрдХ рдЧрдпрд╛ред рдпрд╣ рдкрд╛рдпрдерди рдЬреАрдЖрдИрдПрд▓ рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
  • рдЧреБрдирд┐рдХреЙрд░реНрди: рдирд┐рдЪрд▓реЗ рд╕реНрддрд░реЛрдВ рдкрд░ рд╕реАрдкреАрдпреВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдкреВрд░реНрдг рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
  • Meinheld: рдПрдХ рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб рд╕рд░реНрд╡рд░ рдЬреЛ Bjoern рдЬреИрд╕реЗ CPU рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
  • mod_wsgi: рд╕рднреА рдорд╛рдкреЛрдВ рдореЗрдВ рд╕рднреА CPU рдХреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рд╕рд░реНрд╡рд░
  • uWSGI: рдмрд╣реБрдд рдХрдо CPU рдЙрдкрдпреЛрдЧред рд╕реАрдкреАрдпреВ рдХреА рдЦрдкрдд 50 рдкреНрд░рддрд┐рд╢рдд рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕рдмреВрддреЛрдВ рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рд╣реИ рдЬрд┐рд╕реЗ uWSGI рдареАрдХ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╡рд┐рдЬреЗрддрд╛: рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рддреБрд▓рдирд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЕрдзрд┐рдХ рдЕрд╡рд▓реЛрдХрди рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ! рдпрд╣рд╛рдВ рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рджрд┐рдП рдЧрдП рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рд╕рд░реНрд╡рд░ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  • Bjoern: рдЦреБрдж рдХреЛ "рд╕реБрдкрд░рдлрд╛рд╕реНрдЯ, рдЕрд▓реНрдЯреНрд░рд╛-рд▓рд╛рдЗрдЯрд╡реЗрдЯ WSGI рд╕рд░реНрд╡рд░" рдХреЗ рд░реВрдк рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИред
  • рдЪреЗрд░реАрдкреА: рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди, рдХрдо рдореЗрдореЛрд░реА рдЦрдкрдд рдФрд░ рдХрдо рддреНрд░реБрдЯрд┐ рджрд░ред рд╢реБрджреНрдз рдкрд╛рдпрдерди рдХреЗ рд▓рд┐рдП рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИред
  • Gunicorn: рдордзреНрдпрдо рд▓реЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рд░реНрд╡рд░ред
  • Meinheld: рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдиреНрдпреВрдирддрдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрдЪреНрдЪ рднрд╛рд░ рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ред
  • mod_wsgi: рдЕрдкрд╛рдЪреЗ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдФрд░ рдорд╣рд╛рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
  • uWSGI: рдмрд╣реБрдд рдирд┐рд░рд╛рд╢ рд╣реИрдВред рдпрд╛ рддреЛ рд╣рдордиреЗ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ uWSGI рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИ, рдпрд╛ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВред

Source: https://habr.com/ru/post/hi427217/


All Articles