นี่คือ Fly.Board เอนจินบล็อกที่นักพัฒนาซึ่งเหนื่อยล้ากับความซับซ้อนของ Spring และความหนักของ WordPress ลงมือพัฒนาด้วย C11/C23 เองโดยตรง ขอมาแชร์ผลการทดสอบประสิทธิภาพที่ยืนยันว่าในสภาพแวดล้อม HTTP/3(QUIC) over TLS 1.3 สามารถรองรับ C10k ได้ด้วยไบนารีเดี่ยว

คุณสมบัติหลัก

  • Minimalist Stack: ใช้เฟรมเวิร์กที่พัฒนาขึ้นเอง (CWIST) และโครงสร้างแบบไบนารีเดี่ยว
  • Pure SSR(Server-Side Rendering): ลดความหน่วงในการเรนเดอร์ฝั่งไคลเอนต์ให้เหลือน้อยที่สุด
  • LibTTAK: เครื่องมือจัดการหน่วยความจำแบบคัสตอมที่รับประกันการประมวลผลแบบอะซิงโครนัสและความปลอดภัยของหน่วยความจำ โดยยังคงความเร็วของ C ไว้
  • High Performance: ขณะ Idle ใช้หน่วยความจำ 20MB และแม้มีการเชื่อมต่อพร้อมกัน 10,000 รายการก็ยังทำงานแบบหน่วงต่ำได้ที่ระดับ RSS 369MB
  • Modern Protocol: รองรับ HTTP/3(QUIC) และ TLS 1.3 บนสแตก C แบบคัสตอม

ผลเบนช์มาร์ก C10k (/usr/bin/time -v วัดผล)

  • การเชื่อมต่อพร้อมกัน: 10,000 รายการ (คงสถานะไว้ 24 นาที 46 วินาที)
  • การใช้หน่วยความจำ: RSS สูงสุดประมาณ 369 MB (ประมาณ 37KB ต่อการเชื่อมต่อ)
  • ประสิทธิภาพ I/O: Major page faults 0 (ไม่มีคอขวดจากดิสก์ I/O)
  • ความเสถียรของข้อมูล: เมื่อได้รับ SIGINT จะบันทึกข้อมูลอย่างปลอดภัยผ่าน NukeDB ด้วย FS output จำนวน 89,208 รายการ

เปรียบเทียบกับสแตกเดิม

  • WordPress: ใช้ทรัพยากรหนักจากฐาน PHP-FPM/MySQL และจำเป็นต้องมีการแคชหลายชั้น
  • Pure SSR(Server-Side Rendering): ลดความหน่วงในการเรนเดอร์บนอุปกรณ์สเปกต่ำให้เหลือน้อยที่สุด
  • Spring Boot: มีความซับซ้อนเริ่มต้นและการใช้หน่วยความจำสูงจาก JVM heap และ DI container
  • Fly.Board: รองรับ C10k บน VPS ที่มีหน่วยความจำน้อยกว่า 1GB ได้อย่างสบายโดยไม่ต้องมี caching layer แยกต่างหาก

ข้อที่ยังน่าเสียดายและงานต่อไป

  • จำเป็นต้องปรับปรุงประสิทธิภาพการประมวลผลใน userspace สำหรับอาการที่ System time สูงกว่า User time
  • นอกจากเบนช์มาร์กที่เน้นการอ่านแล้ว ยังมีแผนตรวจสอบภาระงานเขียนของชั้นข้อมูลที่ใช้ SQLite (การเขียนคอมเมนต์/โพสต์พร้อมกัน)

ลิงก์

  • GitHub: https://github.com/gg582/fly.board
    โปรเจกต์นี้ถูกสร้างขึ้นโดยคำนึงถึงสมดุลระหว่างความสมบูรณ์ทางเทคนิคและการใช้งานจริง หวังว่าจะเป็นอีกทางเลือกที่ดีสำหรับนักพัฒนาที่ต้องการรันบล็อกส่วนตัวบน VPS สเปกต่ำ ยินดีรับทุกคำแนะนำ!

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น