ขออนุญาตสนทนาธรรมกับสังฆราชนะครับ
ผมคิดว่าไม่ว่าจะหัวไวหรือหัวช้าก็ทำงานเท่ากัน แต่เสร็จไม่พร้อมกัน (เอิ๊ก) เข้าใจว่าแต่ละ instant ของ FastCGI เป็นตัวที่ compose หน้า HTML ที่ผู้ใช้เห็น
ไม่ว่าจะใช้ HTTP 1.1 keep alive หรือไม่ เวลาเฉลี่ยที่ FastCGI จะถูกใช้งาน ขึ้นกับว่าสามารถจะ render page เสร็จได้เร็วแค่ไหน ส่วนการพยายามป้องกันไม่ให้ swap เป็นแนวที่ถูกต้องรวดเร็วแน่นอน
เมื่อ render เสร็จแล้ว (หรือค่อยๆทำไปใน pipeline) FastCGI ก็จะส่ง HTML ออกไปผ่าน network แล้วจะ free up ตัวเองสำหรับ request อื่น
แต่ขนาดของ HTML นั้นใหญ่กว่า default TXBUF ซึ่งค่าปริยาย จะทำให้ FastCGI ต้องหยุดรอ จน TXBUF ว่าง เนื่องจากผู้รับปลายทางจะรับ HTML ด้วยความเร็วที่ต่ำกว่าเครื่อง g2k สามารถจะส่งได้เสมอ นี่ยังไม่นับความคับคั่งในวงจรต่างๆอีกนะครับ
ดังนั้นหาก bump ค่า TXBUF แล้ว gen kernel ใหม่ หรือจะระบุ mss ในส่วนของ routing เพื่อเพิ่มขนาด TXBUF ก็อาจจะช่วยให้งานของ FastCGI เสร็จสิ้นเร็วขึ้นอีกเพราะคราวนี้ ส่งไปได้เรื่อยๆไม่ต้องหยุดรอ TXBUF
พูดถึงเรื่องนี้ ยังไม่มีความจำเป็นเนื่องจากยังมี idle capacity อีกมหาศาล แต่ผมคิดว่ามีคอขวดอีกจุดหนึ่งในส่วนของระบบซึ่งอาจปรับปรุงได้หากจำเป็นครับ
สาธุ
เป็นคำแนะนำที่ดีมากเลยครับ เป็นจุดที่ optimize แล้วจะได้ความเร็วเพิ่มขึ้นมากจริงๆ แต่ตอนนี้พอลดเหลือ 4 instances แล้วเครื่องยิ่งว่างครับ
เดี๋ยวผมไปเขียนโปรแกรมส่วนเพิ่มงานที่ load เครื่องหน่อยดีกว่า (อาทิเช่น การ plot social networks ของผู้ใช้แต่ละคน) แล้วหลังจากนั้นค่อย optimize ต่อครับ
อ่านเรื่องที่อ.ธวัชชัยเขียนแล้วรู้สึกสนุกไปด้วย ทั้งๆที่ไม่ค่อยเข้าใจรายละเอียดสักเท่าไหร่ ยิ่งความเห็นของคุณConductor ด้วยยิ่งมึนตึ้บไปเลย
นึกเห็นภาพใน lab ของเราเลยค่ะ เรามีคนทั้ง 2 แบบแล้วคนที่หัวไวทำงานเร็วก็จะเป็นกลไกที่หมุนให้ คนหัวช้าทำงานน้อยทำได้เร็วขึ้นกว่าเวลาทำคนเดียว เพราะฉะนั้นการจัดวางตำแหน่งงานก็เป็นสิ่งสำคัญต่อความก้าวหน้าของงาน
คนละบริบทแต่หลักการเดียวกันเลย ใช่ไหมคะ