ื”ืฆื™ื’ hinsightd ืฉืจืช HTTP ื‘ืืžืฆืขื•ืช ืžืขืจื›ืช ื”ืžืฉื ื” ืฉืœ Linux io_uring

ืคื•ืจืกื ืฉืจืช HTTP ืงื•ืžืคืงื˜ื™ hinsightd, ื”ื‘ื•ืœื˜ ื‘ืฉื™ืžื•ืฉ ื‘ืžืžืฉืง ื”-I/O ื”ืืกื™ื ื›ืจื•ื ื™ ืฉืœ io_uring ื”ืžืกื•ืคืง ื‘ืœื™ื‘ืช ืœื™ื ื•ืงืก. ื”ืฉืจืช ืชื•ืžืš ื‘ืคืจื•ื˜ื•ืงื•ืœ HTTP/1.1 ื•ื ื•ืขื“ ืœืฆืจื™ื›ืช ืžืฉืื‘ื™ื ื ืžื•ื›ื” ืชื•ืš ืžืชืŸ ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื ื—ื•ืฆื”. ืœื“ื•ื’ืžื, hinsightd ืชื•ืžืš ื‘-TLS, ืคืจื•ืงืกื™ ื”ืคื•ืš (rproxy), ืื—ืกื•ืŸ ื‘ืžื˜ืžื•ืŸ ืฉืœ ืชื•ื›ืŸ ืฉื ื•ืฆืจ ื‘ืื•ืคืŸ ื“ื™ื ืžื™ ื‘ืžืขืจื›ืช ื”ืงื‘ืฆื™ื ื”ืžืงื•ืžื™ืช, ื“ื—ื™ืกืช ื ืชื•ื ื™ื ืชื•ืš ื›ื“ื™ ืชื ื•ืขื”, ื”ืคืขืœื” ืžื—ื“ืฉ ืœืœื ื—ื™ื‘ื•ืจ, ื—ื™ื‘ื•ืจ ืฉืœ ืžื˜ืคืœื™ ื‘ืงืฉื•ืช ื“ื™ื ืžื™ื•ืช ื‘ืืžืฆืขื•ืช ืžื ื’ื ื•ื ื™ FastCGI ื•-CGI. ืงื•ื“ ื”ืคืจื•ื™ืงื˜ ื›ืชื•ื‘ ื‘ืฉืคืช C ื•ืžื•ืคืฅ ืชื—ืช ืจื™ืฉื™ื•ืŸ BSD.

ื›ื“ื™ ืœืขื‘ื“ ืืช ื”ืชืฆื•ืจื”, ืœื›ืชื•ื‘ ืชื•ืกืคื•ืช ื•ืœื™ืฆื•ืจ ืžื˜ืคืœื™ ื‘ืงืฉื•ืช, ื ื™ืชื ืช ื”ื™ื›ื•ืœืช ืœื”ืฉืชืžืฉ ื‘ืฉืคืช Lua, ื‘ืขื•ื“ ืฉืžื˜ืคืœื™ื ื›ืืœื” ื™ื›ื•ืœื™ื ืœื”ื™ื•ืช ืžื•ื’ื“ืจื™ื ื™ืฉื™ืจื•ืช ื‘ืงื•ื‘ืฅ ืชืฆื•ืจืช ื”ืฉืจืช. ื‘ืฆื•ืจื” ืฉืœ ืชื•ืกืคื™ื, ืชื›ื•ื ื•ืช ื›ืžื• ืฉื™ื ื•ื™ ืคื•ืจืžื˜ ื”ืจื™ืฉื•ื, ืงื™ืฉื•ืจ ื™ื•ืžื ื™ื ื‘ื•ื“ื“ื™ื ืœืžืืจื—ื™ื ื•ื™ืจื˜ื•ืืœื™ื™ื, ื”ื’ื“ืจืช ืืกื˜ืจื˜ื’ื™ื™ืช ืื™ื–ื•ืŸ ืขื•ืžืกื™ื, ืื™ืžื•ืช HTTP, ืฉื›ืชื•ื‘ ื›ืชื•ื‘ืช URL ื•ืขื‘ื•ื“ื” ืžืชื•ื–ืžื ืช (ืœื“ื•ื’ืžื”, ืขื“ื›ื•ืŸ ืื™ืฉื•ืจื™ Let's Encrypt) ืžื™ื•ืฉืžื•ืช ื‘- ืฆื•ืจื” ืฉืœ ืชื•ืกืคื™ื.

ื”ืฉืจืช ืžื’ื™ืข ืขื ืกืคืจื™ื” ืœืฉื™ืœื•ื‘ ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช hinsightd ื‘ืืคืœื™ืงืฆื™ื•ืช ืฉืœืš. Hinsightd ื›ื•ืœืœ ื’ื ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ืžืฉื•ืœื‘ืช ืœืฉืœื™ื—ืช ื‘ืงืฉื•ืช HTTP ืžืฉื•ืจืช ื”ืคืงื•ื“ื”, ืœืžืฉืœ, ื›ื“ื™ ืœื˜ืขื•ืŸ ื“ืฃ, ืืชื” ื™ื›ื•ืœ ืœื”ืจื™ืฅ "hinsightd -d URL". ื”ืฉืจืช ืงื•ืžืคืงื˜ื™ ืžืื•ื“ ื•ืœื•ืงื— ื›-200KB ืงื•ืžืคื™ืœืฆื™ื” (100KB ื‘ืจ ื”ืคืขืœื” ื•-100KB ืกืคืจื™ื™ื” ืžืฉื•ืชืคืช). ืชืœื•ืช ื—ื™ืฆื•ื ื™ืช ื›ื•ืœืœืช ืจืง libc, lua, liburing ื•-zlib, ื•ื‘ืื•ืคืŸ ืื•ืคืฆื™ื•ื ืœื™ openssl/libressl ื•-ffcall.

ืชื•ื›ื ื™ื•ืช ืœืคื™ืชื•ื— ื ื•ืกืฃ ื›ื•ืœืœื•ืช ืืช ื”ื™ื›ื•ืœืช ืœืื—ืกืŸ ืงื‘ืฆื™ื ื“ื—ื•ืกื™ื ื‘ืžื˜ืžื•ืŸ, ื‘ื™ื“ื•ื“ ืืจื’ื– ื—ื•ืœ ืขืœ ื‘ืกื™ืก ืกื™ื ื•ืŸ ืฉื™ื—ื•ืช ืžืขืจื›ืช ื•ืฉื™ืžื•ืฉ ื‘ืžืจื—ื‘ื™ ืฉืžื•ืช, ื ื™ื”ื•ืœ ืจื•ื—ื‘ ืคืก (ืขื™ืฆื•ื‘ ืชืขื‘ื•ืจื”), ืจื™ื‘ื•ื™ ื”ืฉื—ืœื•ืช, ื˜ื™ืคื•ืœ ืžืฉื•ืคืจ ื‘ืฉื’ื™ืื•ืช ื•ื”ื’ื“ืจื” ืฉืœ ืžืืจื—ื™ื ื•ื™ืจื˜ื•ืืœื™ื™ื ื”ืžื‘ื•ืกืกื™ื ืขืœ ืžืกื™ื›ื•ืช.

ื”ืชื•ืฆืื•ืช ืฉืœ ื‘ื“ื™ืงื•ืช ื‘ื™ืฆื•ืขื™ื ืกื™ื ืชื˜ื™ื•ืช (ืœืœื ืื•ืคื˜ื™ืžื™ื–ืฆื™ื•ืช ื‘ืชืฆื•ืจื” ื›ืคื™ ืฉื”ื™ื) ืขืœ ื™ื“ื™ ื›ืœื™ ื”ืฉื™ืจื•ืช ab ื‘ืขืช ื”ืคืขืœืช 250 ื•-500 (ื‘ืกื•ื’ืจื™ื™ื) ื‘ืงืฉื•ืช ืžืงื‘ื™ืœื•ืช ("ab -k -c 250 -n 10000 http://localhost/"):

  • 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

ื”ื•ืกืคืช ืชื’ื•ื‘ื”