เมื่อวานทางทีมงานได้เปิด GotoKnow ที่ใช้ KnowledgeVolution ปรากฎว่าเครื่องถล่มทลายเสียจนนิ่งสนิทต้องปิดเป็นการชั่วคราวอย่างที่ได้เห็นกันครับ
ทางเราก็ต้องถอยมาตั้งหลัก ปรากฎว่า Ruby on Rails ซึ่งเป็น framework ที่เราใช้พัฒนา KnowledgeVolution นั้น ถ้าไม่ได้ทำ caching ดีๆ แล้ว จะกินทรัพยากรระบบสูงมาก นึกดูนะครับ FastCGI แต่ละ instance จองหน่วยความจำไว้สัก 300-400 MB เมื่อตอบสนองต่อผู้ใช้จำนวนหนึ่ง ในขณะที่ระบบเก่าของเราที่พัฒนา framework เองด้วยภาษา Python นั้น กินแค่ 10-20 MB เท่านั้น ไม่รู้ว่าเป็นเพราะ framework เราขนาดเล็กกว่าเยอะ (เพราะซับซ้อนน้อยกว่า) หรือ Python interpreter ทำงานได้ดีกว่า Ruby interpreter ก็ไม่แน่ใจ
เมื่อการทำ caching เป็นสิ่งที่ต้องทำแล้ว พวกเราก็ก้มหน้าก้มตาทำส่วน caching กันใหญ่เพื่อให้ทันเปิดในวันต่อไป และก็ทำเสร็จด้วยความห่วงว่าเราปิดระบบมาหลายวันชักจะนานเกินไปแล้ว
ปรากฎว่าหลังจากทำส่วน caching แล้ว Ruby on Rails ก็ไม่ได้ทำให้ผิดหวัง ทำงานได้รวดเร็วสมชื่อเสียงจริงๆ อย่างไรก็ตาม แต่ละ FastCGI instance ก็ยังกินหน่วยความจำเยอะอยู่ เลยเริ่มสงสัยว่าเป็น algorithm อะไรบางอย่างภายใน Rails (หรือ Ruby?) หรือเปล่าที่จะจองหน่วยความจำไว้เพื่อใช้ซ้ำและจะปล่อยเมื่อจำเป็นเท่านั้น จะได้ไม่ต้องเสียเวลาจองหน่วยความจำอีก เรื่องนี้ก็ต้องศึกษากันต่อไป
อย่างไรก็ตาม FastCGI instance ที่เราต้อง run นั้นเราตั้งไว้แค่สูงสุดไม่เกิน 5 instances ก็เพียงพอต่อการรับผู้ใช้แล้ว ในขณะที่ระบบเก่าของเราแม้จะกินหน่วยความจำน้อยกว่าแต่ก็ต้อง run ไว้ประมาณ 15-20 instances ถึงจะรองรับได้ แต่ยังสรุปไม่ได้ว่า Ruby กินหน่วยความจำมากกว่าแต่ตอบสนองเร็วกว่า ส่วน Python นั้นกินหน่วยความจำน้อยกว่าแต่ตอบสนองช้ากว่า ก็คงต้องดูกันต่อไปครับ
KnowledgeVolution จะเปิดให้ download ไปติดตั้งในองค์กรได้ภายในไม่นานนี้ครับ ตอนนี้ขอรอดูอาการว่าไม่มี bug อื่นๆ หรืออะไรที่ critical ต้องแก้ไขก่อน
ตอนนี้ท่านที่จะนำ KnowledgeVolution ไปใช้ในองค์กรเตรียมเครื่องไว้ได้เลยครับ ไม่นานเกินรอแน่นอนครับ
ไม่มีความเห็น