setting ของ server ที่เราใช้กับ GotoKnow.org ในช่วงที่ผ่านมาคือ LigHTTPD (อ่านว่า Lighty) โดยทำงานผ่าน FastCGI เพื่อติดต่อกับ Rails application ของเราที่ชื่อ KnowledgeVolution ครับ
ปรากฎว่าใน setting นี้ แม้จะทำงานได้รวดเร็ว แต่ก็ไม่ค่อย stable เท่าไหร่ เพราะ communication ระหว่าง components นั้นหลุดระหว่างกันบ่อยเวลา peak ขึ้นสูงๆ ครับ
ในช่วงวันหยุดที่ผ่านมา เราจึงได้เปลี่ยนเป็น Apache + mod_proxy_balancer + Mongrel ครับ
ที่ BlogFish มี diagram อธิบายสิ่งที่เราได้เปลี่ยนแปลงไว้ชัดเจนดีทีเดียวครับ
ปรากฎว่าใน setting นี้ดูเหมือนจะทำงานได้ช้าลงและกินหน่วยความจำมากขึ้น แต่ก็เหมือนว่าจะ stable ดี ส่วนจะ stable แค่ไหนก็คงต้องดูไปอีกหลายวันครับ
ใน setting ใหม่นี้จะช่วยให้เรา scale ออกไปเป็น cluster ได้ง่ายขึ้นด้วย เพราะเราต้อง support อีกหลาย sites ที่เราวางแผนไว้
ยังมีเรื่องต้องทำอีกเยอะแล้วผมค่อยเล่าเพิ่มเติมครับ
กราบเรียนท่านอาจารย์ ดร.ธวัชชัย คู่ จัน
มาเยียมยามให้กำลังใจครับ ทางเทคนิคไม่ค่อยจะเข้าใจ แต่รู้ใจว่า "ทีมให้ใจในการพัฒนา อย่างท่มเท" พวกเราจึงได้ฮาเฮ เข้ามาร่วม ลปรร ครับ
สมมุติว่ามีหลาย site ใน server เดียว ถ้ามีบาง site อยาก restart ก็ restart แต่ Mongrel ก็พอ? ไม่ต้อง restart Apache?
(มีเพื่อนที่อยากเปิด Rails web hosting แต่ก็เหมือนหาๆท่าอยู่)
เรื่องเทคนิคไม่ค่อยรุ้เรื่องหรอกค่ะ แต่ขอเป็นกำลังใจให้อาจารย์และทีมงานนะคะอาจารย์ ^__*
ตอบพี่วีร์ครับ: ออฟฟิศผมใช้การสร้าง cap(istrano) command เอาครับ เช่น cap app_restart มันก็จะไป restart ในส่วนของ mongrel ให้ โดยการใช้ ssh นั่นแหละ
สำหรับการทำงานจริงๆ เวลาที่เราต้องแก้ไข code ที่จำเป็นต้อง restart เช่นแก้ model หรือ route หรือ plugin ตัว capistrano จะช่วยได้เยอะเลยครับ มันจะไป restart ตัว mongrel ให้ทุกครั้งที่เรา deploy ไป(หรือจะไม่ให้ restart ก็ได้) อันนี้ขึ้นอยู่กับ hosting ครับ แต่ที่เคยใช้มา จะเป็นแบบนี้หมด
สำหรับ host ที่เคยใช้ จะมี
http://railsmachine.com/
http://www.slicehost.com/
แล้วก็ host ที่ config เอง โดยใช้สูตรจากที่ link ที่อาจารย์ธวัชชัยเอามาให้ดูนั่นแหละครับ
สำหรับ textdrive ผมก็คิดว่าน่าจะเหมือนๆ กัน
ตอบตามประสบการณ์อันน้อยนิดครับ ฝั่ง hosting นี่ เจ้านายผมจัดการหมด ผมแค่สั่ง cap deploy แค่นี้เอง
use mongrel for commercial purpose but when one connection cause the load to the server, other users will be affected.
I am looking forward to designing a new system for a new server which will handle much more load than the current server.
If you have already done some research, may be we can share krub. I can have my site for your pilot test.
Thanks,
BTW: I am CoE, PSU.