Linux io_uring рдЙрдкрдкреНрд░рдгрд╛рд▓реА рд╡рд╛рдкрд░реВрди hinsightd HTTP рд╕рд░реНрд╡реНрд╣рд░ рд╕рд╛рджрд░ рдХреЗрд▓рд╛

рдХреЙрдореНрдкреЕрдХреНрдЯ hinsightd HTTP рд╕рд░реНрд╡реНрд╣рд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, Linux рдХрд░реНрдирд▓рдордзреНрдпреЗ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓реЗ io_uring рдЕрд╕рд┐рдВрдХреНрд░реЛрдирд╕ I/O рдЗрдВрдЯрд░рдлреЗрд╕ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рд▓рдХреНрд╖рдгреАрдп рдЖрд╣реЗ. рд╕рд░реНрд╡реНрд╣рд░ HTTP/1.1 рдкреНрд░реЛрдЯреЛрдХреЙрд▓рд▓рд╛ рд╕рдорд░реНрдерди рджреЗрддреЛ рдЖрдгрд┐ рдЕрддреНрдпрдВрдд рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛рдирд╛ рдХрдореА рд╕рдВрд╕рд╛рдзрди рд╡рд╛рдкрд░рд╛рд╕рд╛рдареА рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗрд▓реЗ рдЖрд╣реЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, hinsightd TLS, рд░рд┐рд╡реНрд╣рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА (rproxy), рд╕реНрдерд╛рдирд┐рдХ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ рдбрд╛рдпрдиреЕрдорд┐рдХрд▓реА рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рд╛рдордЧреНрд░реАрдЪреЗ рдХреЕрд╢рд┐рдВрдЧ, рдСрди-рдж-рдлреНрд▓рд╛рдп рдбреЗрдЯрд╛ рдХреЙрдореНрдкреНрд░реЗрд╢рди, рдХрдиреЗрдХреНрд╢рдирд▓реЗрд╕ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ, FastCGI рдЖрдгрд┐ CGI рдпрдВрддреНрд░рдгрд╛ рд╡рд╛рдкрд░реВрди рдбрд╛рдпрдиреЕрдорд┐рдХ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рд╣рдБрдбрд▓рд░рдЪреЗ рдХрдиреЗрдХреНрд╢рди рдпрд╛рдВрдЪреЗ рд╕рдорд░реНрдерди рдХрд░рддреЗ. рдкреНрд░рдХрд▓реНрдк рдХреЛрдб рд╕реА рднрд╛рд╖реЗрдд рд▓рд┐рд╣рд┐рд▓рд╛ рдЬрд╛рддреЛ рдЖрдгрд┐ рдмреАрдПрд╕рдбреА рдкрд░рд╡рд╛рдиреНрдпрд╛рдЕрдВрддрд░реНрдЧрдд рд╡рд┐рддрд░рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ.

рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЕреЕрдбрд┐рд╢рдиреНрд╕ рд▓рд┐рд╣рд╛ рдЖрдгрд┐ рд╡рд┐рдирдВрддреА рд╣рдБрдбрд▓рд░реНрд╕ рддрдпрд╛рд░ рдХрд░рд╛, рд▓реБрдЖ рднрд╛рд╖рд╛ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХреЗрд▓реА рдЬрд╛рддреЗ, рддрд░ рдЕрд╢рд╛ рд╣рдБрдбрд▓рд░реНрд╕рдирд╛ рдереЗрдЯ рд╕рд░реНрд╡реНрд╣рд░ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдлрд╛рдЗрд▓рдордзреНрдпреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ. рдкреНрд▓рдЧрдЗрдиреНрд╕рдЪреНрдпрд╛ рд╕реНрд╡рд░реВрдкрд╛рдд, рд▓реЙрдЧрд┐рдВрдЧ рдлреЙрд░рдореЕрдЯ рдмрджрд▓рдгреЗ, рд╡реИрдпрдХреНрддрд┐рдХ рд▓реЙрдЧ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рд╣реЛрд╕реНрдЯрд╢реА рд▓рд┐рдВрдХ рдХрд░рдгреЗ, рд▓реЛрдб рдмреЕрд▓рдиреНрд╕рд┐рдВрдЧ рдзреЛрд░рдг рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгреЗ, HTTP рдкреНрд░рдорд╛рдгреАрдХрд░рдг, URL рдкреБрдирд░реНрд▓реЗрдЦрди рдЖрдгрд┐ рд╢реЗрдбреНрдпреВрд▓ рдХреЗрд▓реЗрд▓реЗ рд╢реЗрдбреНрдпреВрд▓ рдХреЗрд▓реЗрд▓реЗ рдХрд╛рд░реНрдп (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд▓реЗрдЯреНрд╕ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЗ рдЕрджреНрдпрддрдирд┐рдд рдХрд░рдгреЗ) рдпрд╛рд╕рд╛рд░рдЦреА рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рд▓рд╛рдЧреВ рдХреЗрд▓реА рдЖрд╣реЗрдд. рдкреНрд▓рдЧрдЗрдирдЪреЗ рд╕реНрд╡рд░реВрдк.

рддреБрдордЪреНрдпрд╛ рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдордзреНтАНрдпреЗ hinsightd рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕рдорд╛рдХрд▓рд┐рдд рдХрд░рдгреНтАНрдпрд╛рд╕рд╛рдареА рд╕рд░реНрд╡реНрд╣рд░ рд▓рд╛рдпрдмреНрд░рд░реАрд╕рд╣ рдпреЗрддреЛ. Hinsightd рдордзреНрдпреЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрдирд╡рд░реВрди HTTP рд╡рд┐рдирдВрддреНрдпрд╛ рдкрд╛рдард╡рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХрд╛рддреНрдорд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рджреЗрдЦреАрд▓ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдкреГрд╖реНрда рд▓реЛрдб рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА "hinsightd -d URL" рдЪрд╛рд▓рд╡реВ рд╢рдХрддрд╛. рд╕рд░реНрд╡реНрд╣рд░ рдЕрддрд┐рд╢рдп рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЖрд╣реЗ рдЖрдгрд┐ рд╕реБрдорд╛рд░реЗ 200KB рд╕рдВрдХрд▓рд┐рдд (100KB рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ рдЖрдгрд┐ 100KB рд╕рд╛рдорд╛рдпрд┐рдХ рд▓рд╛рдпрдмреНрд░рд░реА) рдШреЗрддреЗ. рдмрд╛рд╣реНрдп рдЕрд╡рд▓рдВрдмрдирд╛рдВрдордзреНрдпреЗ рдлрдХреНрдд libc, lua, liburing рдЖрдгрд┐ zlib рдЖрдгрд┐ рдкрд░реНрдпрд╛рдпрд╛рдиреЗ openssl/libressl рдЖрдгрд┐ ffcall рдпрд╛рдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рд╣реЛрддреЛ.

рдкреБрдвреАрд▓ рд╡рд┐рдХрд╛рд╕рд╛рдЪреНрдпрд╛ рдпреЛрдЬрдирд╛рдВрдордзреНрдпреЗ рдХреЕрд╢реЗрдордзреНрдпреЗ рд╕рдВрдХреБрдЪрд┐рдд рдлрд╛рдЗрд▓реНрд╕ рд╕рдВрдЪрдпрд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛, рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдлрд┐рд▓реНрдЯрд░рд┐рдВрдЧрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рд╕рдБрдбрдмреЙрдХреНрд╕ рдЕрд▓рдЧрд╛рд╡ рдЖрдгрд┐ рдиреЗрдорд╕реНрдкреЗрд╕рдЪрд╛ рд╡рд╛рдкрд░, рдмрдБрдбрд╡рд┐рдбреНрде рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди (рдЯреНрд░реЕрдлрд┐рдХ рд╢реЗрдкрд┐рдВрдЧ), рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ, рд╕реБрдзрд╛рд░рд┐рдд рддреНрд░реБрдЯреА рд╣рд╛рддрд╛рд│рдгреА рдЖрдгрд┐ рдорд╛рд╕реНрдХрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдЖрднрд╛рд╕реА рд╣реЛрд╕реНрдЯрдЪреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдпрд╛рдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЖрд╣реЗ.

250 рдЖрдгрд┐ 500 тАЛтАЛ(рдХрдВрд╕рд╛рдд) рд╕рдорд╛рдВрддрд░ рд╡рд┐рдирдВрддреНрдпрд╛ ("ab -k -c 250 -n 10000 http://localhost/") рдЪрд╛рд▓рд╡рддрд╛рдирд╛ ab рдпреБрдЯрд┐рд▓рд┐рдЯреАрджреНрд╡рд╛рд░реЗ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдХрд╛рдордЧрд┐рд░реА рдЪрд╛рдЪрдгреАрдЪреЗ рдкрд░рд┐рдгрд╛рдо (рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдордзреНрдпреЗ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рди рдХрд░рддрд╛) :

  • hinsightd/0.9.17 - 63035.01 рд╡рд┐рдирдВрддреНрдпрд╛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдж (54984.63)
  • lighttpd/1.4.67 - 53693.29 рд╡рд┐рдирдВрддреНрдпрд╛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдж (1613.59)
  • Apache/2.4.54 - 37474.10 рд╡рд┐рдирдВрддреНрдпрд╛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдж (34305.55)
  • Caddy/2.6.2 - 35412.02 рд╡рд┐рдирдВрддреНрдпрд╛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдж (33995.57)
  • nginx/1.23.2 - 26673.64 рд╡рд┐рдирдВрддреНрдпрд╛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдж (26172.73)

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛