แนะนำเซิร์ฟเวอร์ hinsightd HTTP โดยใช้ระบบย่อย Linux io_uring

มีการเผยแพร่เซิร์ฟเวอร์ HTTP hinsightd ขนาดกะทัดรัด ซึ่งโดดเด่นด้วยการใช้อินเทอร์เฟซ I/O แบบอะซิงโครนัส io_uring ที่มีให้ในเคอร์เนล Linux เซิร์ฟเวอร์รองรับโปรโตคอล HTTP/1.1 และได้รับการออกแบบสำหรับการใช้ทรัพยากรต่ำในขณะที่ให้ฟังก์ชันที่จำเป็นมาก ตัวอย่างเช่น hinsightd รองรับ TLS, reverse proxying (rproxy), การแคชเนื้อหาที่สร้างขึ้นแบบไดนามิกในระบบไฟล์ในเครื่อง, การบีบอัดข้อมูลแบบ on-the-fly, การรีสตาร์ทแบบไร้การเชื่อมต่อ, การเชื่อมต่อตัวจัดการคำขอแบบไดนามิกโดยใช้กลไก FastCGI และ CGI รหัสโครงการเขียนด้วยภาษา C และเผยแพร่ภายใต้ใบอนุญาต BSD

ในการประมวลผลการกำหนดค่า เขียนเพิ่มเติม และสร้างตัวจัดการคำขอ ความสามารถในการใช้ภาษา Lua มีให้ ในขณะที่ตัวจัดการดังกล่าวสามารถกำหนดได้โดยตรงในไฟล์การกำหนดค่าเซิร์ฟเวอร์ ในรูปแบบของปลั๊กอิน คุณลักษณะต่างๆ เช่น การเปลี่ยนรูปแบบการบันทึก การเชื่อมโยงบันทึกแต่ละรายการกับโฮสต์เสมือน การกำหนดกลยุทธ์การจัดสรรภาระงาน การตรวจสอบสิทธิ์ HTTP การเขียน URL ใหม่ และกำหนดการงานตามกำหนดเวลา (เช่น การอัปเดตใบรับรอง Let's Encrypt) ถูกนำมาใช้ใน รูปแบบของปลั๊กอิน

เซิร์ฟเวอร์มาพร้อมกับไลบรารีสำหรับการรวมฟังก์ชันการเข้าใจข้อมูลเชิงลึกเข้ากับแอปพลิเคชันของคุณ Hinsightd ยังมีฟังก์ชันแบบบูรณาการสำหรับการส่งคำขอ HTTP จากบรรทัดคำสั่ง เช่น หากต้องการโหลดหน้าเว็บ คุณสามารถเรียกใช้ "hinsightd -d URL" เซิร์ฟเวอร์มีขนาดกะทัดรัดมากและใช้เวลาในการคอมไพล์ประมาณ 200KB (ปฏิบัติการได้ 100KB และไลบรารีที่ใช้ร่วมกัน 100KB) การพึ่งพาภายนอกรวมถึง libc, lua, liburing และ zlib เท่านั้น และตัวเลือก opensl/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)
  • แคดดี้/2.6.2 - 35412.02 คำขอต่อวินาที (33995.57)
  • nginx/1.23.2 - 26673.64 คำขอต่อวินาที (26172.73)

ที่มา: opennet.ru

เพิ่มความคิดเห็น