26 คะแนน โดย yunyun0505 2022-09-15 | 5 ความคิดเห็น | แชร์ทาง WhatsApp

nginx มีข้อจำกัด

  • ใช้ worker เพียงตัวเดียวต่อหนึ่งคำขอ จึงเกิดความไม่สมดุลในการใช้ CPU core
  • เนื่องจากมี connection pool แยกตามแต่ละ worker ทำให้อัตราการนำ TCP และ TLS connection กลับมาใช้ซ้ำไม่ดี -> TTFB สูงขึ้น
  • นอกจากนี้ ฟีเจอร์ที่จำเป็นต่อการใช้งาน nginx ก็ต้องพัฒนาขึ้นเอง แต่ nginx ที่ออกแบบด้วย C ไม่ได้เป็น memory-safe ทำให้แม้แต่วิศวกรที่ชำนาญก็ยังพลาดได้

Pingora

  • Cloudflare ได้รับคำขอที่ไม่เป็นไปตามมาตรฐาน RFC อยู่มาก แต่ไลบรารีของบุคคลที่สามอย่าง hyper ถูกพัฒนาให้เคร่งครัดตาม RFC จึงต้องใช้แรงเพิ่มหากจะขยายความสามารถ เลยเลือกสร้างขึ้นเอง
  • เลือก Rust เพราะสามารถทดแทนสิ่งที่ C ทำได้ด้วยวิธีที่ memory-safe โดยไม่ลดทอนประสิทธิภาพ
  • เพื่อให้แชร์ connection pool ได้ง่าย จึงนำระบบ scheduling แบบ work-stealing มาใช้ และทำให้อัตราการใช้ซ้ำเพิ่มขึ้น ปัจจุบันสร้าง connection ต่อวินาทีเหลือเพียง 1/3 เมื่อเทียบกับก่อนหน้า
  • ใช้ CPU น้อยลง 70% และใช้หน่วยความจำน้อยลง 67% เมื่อเทียบกับเดิม
  • มีแผนจะเปิดโอเพนซอร์สในอนาคต

5 ความคิดเห็น

 
functor 2022-09-27

การใช้ CPU 70% และหน่วยความจำ 67% นี่น่าทึ่งมากจริง ๆ..

 
ifmkl 2022-09-16

ว้าว ผมก็ใช้ nginx ได้ดีมากเหมือนกัน ถ้าอันนี้ออกมาเป็นโอเพนซอร์สเมื่อไร อยากลองใช้ทันทีเลยครับ

 
forteleaf 2022-09-16

ถึงจะเรียน Rust ก็ยังแทบไม่มีที่ให้สมัครงานเลย

 
jungmin1237 2022-09-15

Rust นี่ถูกใจเลยครับ

 
jjpark78 2022-09-15

อย่างน้อยในงานเขียนโปรแกรมระบบ Rust ก็กำลังกลายเป็นตัวเลือกที่โดดเด่นขึ้นเรื่อย ๆ เลยนะ..