2007-11-11 ข้อมูลเฉพาะกาล: GotoKnow ช้าอีกแล้ว
ทุกท่านคงสังเกตเห็นอยู่แล้วว่า GotoKnow เริ่มทำงานช้าลงมากมาตั้งแต่วันที่ 29 ตุลาคม เรื่องนี้ผมยอมรับว่าค่อนข้างประหลาดใจ เพราะคิดว่าการปรับปรุงเมื่อปลายเดือนสิงหาคม/ต้นเดือนกันยายนน่าจะช่วยให้ GotoKnow ทำงานตอบสนองต่อความต้องการของสมาชิกได้ดีขึ้นมาก แต่ผ่านไปสองเดือนเท่านั้น กลับออกอาการอีกแล้ว
หลังจากวิเคราะห์และปรับปรุงรายวันเรื่อยมาในช่วงที่เกิดปัญหา ก็พบว่า เครื่องที่ทำงานเป็นฐานข้อมูลเป็นคอขวดของระบบ ฐานข้อมูล GotoKnow มีลักษณะพิเศษอยู่อย่างหนึ่ง คือเก็บข้อมูลทุกอย่าง ทุกบันทึก ทุกความคิดเห็นเอาไว้ทั้งหมด ไม่มีการลบทิ้งเลย
ส่วนการแก้ไข ก็ต้องแก้ที่ต้นเหตุ คือปรับปรุงเครื่องแม่ข่ายที่ทำหน้าที่เป็นฐานข้อมูล โดยที่อาจารย์ธวัชชัยได้แยกเอาฐานข้อมูลของ Learners ออกไปไว้บนเครื่องแม่ข่ายอีกเครื่องหนึ่ง (แทนการรวมฐานข้อมูลของ GotoKnow และ Learners ไว้บนเครื่องเดียวกัน) ซึ่งก็บรรเทาปัญหาการใช้งานได้ในระดับหนึ่ง
แต่สำหรับการแก้ไขอย่างถาวรนั้น มีผู้ปวารณาตัวบริจาคเครื่องแม่ข่ายที่มีกำลังสูงกว่าฐานข้อมูลเดิมให้ มี disk ที่มีความเร็วสูงขึ้นหนึ่งในสามเท่า มีความจุสูงขึ้นเป็นสี่เท่า มีกำลังในการคำนวณเพิ่มขึ้นเท่าตัว และมีหน่วยความจำเพิ่มขึ้นอีกเท่าตัว; ทาง UsableLabs ได้เจียดงบวิจัยก้อนสุดท้ายที่ได้รับจาก สคส. ขอให้ช่วยจัดการซื้อเครื่องแม่ข่ายในขนาดเดียวกัน อีกเครื่องหนึ่งเอาไว้ทดแทนกันในกรณีที่เกิดปัญหา และเพื่อขยายการบริการสำหรับอนาคต
ซึ่งเครื่องแม่ข่ายใหม่ทั้งสองนี้พร้อมใช้งานแล้ว จึงเรียนมาเพื่อแจ้งให้สมาชิกทราบว่าจะมีการปรับปรุงระบบในช่วงสัปดาห์ที่จะถึงนี้ อาจจะมีความขลุกขลักบ้าง อาจจะมีความจำเป็นที่จะต้องปิดระบบเพื่อย้ายข้อมูลไปสู่เครื่องแม่ข่ายใหม่บ้าง หวังว่าสมาชิกจะเข้าใจนะครับ จะพยายามให้กระทบกระเทือนต่อการใช้งานน้อยที่สุด
เรื่องนี้มีบทเรียนครับ
- เมื่อทรัพยากรมีอยู่จำกัด ไม่ว่าในขณะที่เราใช้งาน ระบบทำงานได้ดีหรือไม่ เราก็ต้องเข้าใจความมีอยู่อย่างจำกัดเสมอ และควรจะพยายามใช้ให้ได้ประโยชน์สูงสุดต่อทุกคน -- วิธีการที่ใช้ทรัพยากรของ GotoKnow ให้น้อยลง คือการเปลี่ยนไปใช้ GotoKnow Monitor ซึ่งจะลดภาระการทำงานของ GotoKnow โดยตรง
- ทุกข้อความ ทุกความเห็นที่จะเขียน ขอให้แน่ใจว่ามีประโยชน์ต่อเพื่อนสมาชิกส่วนรวม หากเป็นเรื่องที่คุยกันเองระหว่างสองท่าน ท่านยังสามารถใช้อีเมล โทรศัพท์ IM หรือช่องทางการสื่อสารแบบอื่นเป็นทางเลือกได้ ทั้งนี้เพื่อให้เป็นภาระต่อ GotoKnow ให้น้อยที่สุด
- บางทีการเขียนข้อความในลักษณะแบบนี้ ก็เสี่ยงต่อการถูกหมั่นไส้ หรือการถูกเรียกว่าเป็นขาใหญ่ หากผมก้าวล่วงท่านใดไป ขออภัยเป็นอย่างสูงนะครับ ผมเพียงแต่รู้สึกว่าเรื่องที่ต้องพูด ก็ต้องพูด สิ่งที่เป็นสาธารณประโยชน์ ก็ต้องพยายามช่วยกันรักษาบำรุงครับ (รูปแบบหนึ่งของ ความเป็นเจ้าของ GotoKnow)
- ในกรณีที่ล๊อกอินเข้าระบบไม่ได้หลังจากทดลองอยู่หลายครั้งแล้ว อย่าใช้ความเพียรแก้ไขครับ การแก้ไขกระทำได้โดยการลบ cookie ชื่อ gotoknow.org ทิ้ง แล้วจึงล๊อกอินใหม่อีกครั้งหรือสองครั้ง
- กุศลจิตเป็นจุดเริ่มต้น แต่การปฏิบัติที่ดีต่อ GotoKnow เท่านั้น ที่จะช่วย GotoKnow ได้ครับ
2007-11-12 เครื่องแม่ข่ายใหม่ตัวแรก: ปรับปรุงฐานข้อมูล (database)
ในระบบ KnowledgeVolution ที่ GotoKnow ใช้อยู่นี้ เก็บทุกบันทึก+ทุกความคิดเห็นไว้ในฐานข้อมูลกลางครับ การแสดงผลจะต้องดึงข้อมูลจากฐานข้อมูลกลางออกมาวาดเป็นหน้าจอ แล้วจึงส่งให้เบราเซอร์แสดงผล เช่นบันทึกที่มี 8 ความคิดเห็น ก็ต้องอ่าน 9 ข้อความ พร้อมทั้งข้อมูลประกอบอื่นๆ อีก เช่นใครเขียนข้อความนั้น หมายเลขอ้างอิง เป็นต้น
ดังนั้นการเรียกดูแต่ละหน้า ทำให้ฐานข้อมูลต้องทำงานหลายครั้ง ในขณะนี้ GotoKnow มีการเรียกชมในวันทำงานเกือบแสนห้าหมื่นหน้าต่อวัน และมีอีกประมาณแสนหน้าในวันหยุด
เพื่อแก้ไขคอขวดในจุดนี้ เมื่อคืนได้มีการเปลี่ยนเครื่องแม่ข่ายที่ทำงานเป็นฐานข้อมูล เป็นเครื่องใหม่ มีกำลังในการประมวลผลมากขึ้น สามารถประมวลผลแบบขนานได้ดีขึ้น มีหน่วยความจำมากขึ้น และมีดิสก์ที่มีความเร็วสูงขึ้น เข้ามาแทนเครื่องแม่ข่ายเดิม
ผลการวัดเบื้องต้น พบว่าฐานข้อมูลตอบสนองต่อความต้องการข้อมูลได้เร็วขึ้นมาก จนทำให้เครื่องแม่ข่ายที่ทำหน้าที่วาดหน้าจอ (HTML rendering) ไม่ต้องหยุดรอ ทำให้ระบบ GotoKnow ทำงานตอบสนองได้เร็วขึ้นมาก
ดังนั้นจึงสรุปว่า
- การวิเคราะห์ถึงต้นเหตุของความช้าของระบบถูกต้อง
- ลงทุนแก้ไขถูกจุด
- กระบวนการแก้ไข "ย้ายเครื่องแม่ข่ายจากเครื่องเก่าไปยังเครื่องใหม่" เป็นไปด้วยดี ยังไม่พบปัญหาใดๆ
- จะมี AAR ตามมาถ้าอาจารย์ธวัชชัยมีเวลาเขียน (ไม่ได้กดดันนะครับ)
<hr width="100%" size="2" /><h3>2007-11-15 เครื่องแม่ข่ายใหม่ตัวที่สอง: การจัดการหน้าจอ (application server)
</h3><p>จากการติดตั้งเครื่องแม่ข่ายใหม่ตัวแรกเมื่อสามวันก่อน พบว่าการเข้าระบบ (login) ดีขึ้นเป็นอย่างมาก ไม่พบอาการดื้อการเข้าระบบ (ใส่ชื่อผู้ใช้ รหัสผ่าน พร้อมทั้งรหัสสุ่มแล้ว ระบบกลับให้เข้าระบบใหม่) ส่วนเมื่อเข้าระบบแล้ว ก็สามารถสร้าง+แก้ไขบันทึก พร้อมทั้งให้ความคิดเห็นภายใต้บัญชีชื่อผู้ใช้ของตนได้ ไม่หลุดจนต้องเข้าระบบใหม่ – เรื่องนี้เป็นบทเรียนสำหรับไซต์ต่างๆ ที่นำ KV ไปใช้งาน ว่าจะต้องมีเครื่องแม่ข่ายที่ทำงานเป็นฐานข้อมูลที่มีกำลังพอ ไม่ช้า</p><p>บ่ายสามโมงวันนี้ ได้ทำการติดตั้งเครื่องแม่ข่ายใหม่ตัวที่สอง และการดึงข้อมูลจากฐานข้อมูลมาประกอบเป็น HTML เพื่อส่งไปแสดงผลบนเบราเซอร์ของสมาชิก ทำบนเครื่องนี้ทั้งหมด </p><p>ผลลัพท์คือ GotoKnow ขณะมีผู้ใช้จำนวนมาก กลับมีเวลาในการตอบสนองลดลง (จาก 150ms no load/500ms full load ลดลงเหลือ 100ms full load; และลดลงเป็นอย่างมากเมื่อเทียบกับ 500ms no load/3 sec full load ก่อนการปรับปรุงเมื่อต้นเดือนกันยายน) </p><p>สรุปได้ว่า </p><ol><li>การวิเคราะห์ถึงต้นเหตุของคอขวดอันที่สองของระบบถูกต้อง</li><li>เครื่องที่ได้รับบริจาค ทำงานได้ถูกต้องตามวัตถุประสงค์ของผู้บริจาค
</li><li>กระบวนการย้ายเครื่องแม่ข่ายจากเครื่องเก่าไปยังเครื่องใหม่ เป็นไปด้วยดี </li><li>ระบบบริการ GotoKnow ลดจากการใช้เครื่องแม่ข่ายเดิม 5 เครื่อง เหลือการใช้เครื่องแม่ข่ายใหม่เพียง 2 เครื่อง
</li></ol><p>ทั้งนี้ ก็ยังจำเป็นต้องมีการปรับแต่งต่อไปอีก เพื่อให้ได้ประสิทธิภาพที่ดีกว่านี้ </p><p>เครื่องแม่ข่ายที่ว่างอยู่ ก็จะนำไปช่วย Learners Researchers และ Volunteers ต่อไป</p>