Pantip-Cafe | Pantip-TechExchange | PantipMarket.com | Chat | PanTown.com | BlogGang.com  


 
คุยกับพันทิป 01/09/54 vote ติดต่อทีมงาน

ที่ผ่านมาเว็บของเราจะปิดเพื่อทำ File System Maintenance ประมาณเดือนละ 1 ครั้ง ทางผมเองไม่เคยได้อธิบายเหตุผลอย่างเป็นเรื่องเป็นราวเสียที เนื่องจากคิดว่าคงต้องเขียนค่อนข้างยาวจึงจะสามารถอธิบายได้ และที่ผ่านมาไม่มีพื้นเหมาะๆสำหรับอธิบายโดยที่ไม่เป็นการรบกวน ตอนนี้มีพื้นที่ "คุยกับพันทิป" ตรงนี้ ซึ่งน่าจะพอเล่าอะไรยาวๆให้ฟังกันได้ จึงถือโอกาสมาเล่าสู่กันฟัง (อาจจะต้องศัพท์เทคนิคมากนิดหนึ่งนะครับ ศัพท์ไหนที่ท่านสมาชิกไม่คุ้น อาจจะต้องใช้ wiki ค้นดูนิดนะครับ เพราะถ้าขยายความทั้งหมดกระทู้จะยาวมาก)

ก่อนปี 2553เว็บพันทิปคาเฟ่ทำงานอยู่บนเซอร์เวอร์เครื่องเดียวแต่ก็ค่อนข้างแรง และเมื่อเว็บมีผู้ใช้บริการมากขึ้นทางทีมงานก็ทยอยอัพเกรดเครื่องให้แรงขึ้นตามจำนวนผู้ใช้มาเรื่อยๆ จนสุดท้ายเราพบว่าการอัพเกรดเครื่องดูจะไม่ค่อยช่วยแก้ปัญหา และเมื่อวิเคราะห์ละเอียดลงไปก็พบว่าสาเหตุของปัญหามาจาก I/O หรือการอ่านเขียนบนฮาร์ดดิสก์มีความถี่สูงมากจนฮาร์ดดิสก์ที่เร็วที่สุดไม่สามารถทำงานได้ทัน แม้จะพยายามกระจายเว็บไปบนฮาร์ดดิสก์หลายๆลูกแล้วก็ตาม

ในเวลานั้นเราหาทางออกโดยเริ่มจากการศึกษาเทคโนโลยี่ที่เรียกว่า Distributed File System ซึ่งเป็นการนำเซิร์ฟเวอร์หลายๆตัวมาเชื่อมต่อกันโดยมีการควบคุมจากโปรแกรมระบบเฉพาะ เพื่อให้กลุ่มของเซอร์เวอร์ดังกล่าวถูกมองเห็นเป็นฮาร์ดดิสก์ลูกใหญ่ๆหนึ่งลูกซึ่งนับเป็นเทคโนโลยีที่น่าสนใจมาก แต่เสียดายที่ไม่มีโอกาสได้นำมาใช้จริง เนื่องจากหลังจากศึกษาและเปรียบเทียบพบว่า SAN Storage มีราคาถูกลงกว่าเดิมมาก จนเมื่อคำนวนเปรียบเทียบแล้วเงินลงทุนที่ต้องใช้ไม่ต่างกันนัก แต่การทำ clustering โดยใช้ SAN Storage เป็นเทคโนโลยีที่ใช้กันแพร่หลายมานานจึงคิดว่าน่าจะอยู่ตัวกว่า

จากจุดนั้นเราจึงได้ตัดสินใจเปลี่ยนระบบที่รองรับการทำงานของเว็บพันทิปให้เป็นแบบ Clustering โดยใช้ SAN Storage เป็นที่เก็บข้อมูล และได้เลือกใช้ File System ที่ชื่อว่า OCFS2 ซึ่งเป็นผลพวกจากช่วงที่ศึกษา Distributed File System โดยพบว่า OCFS2 นั้นให้ประสิทธิภาพที่สูง ใช้ทรัพยากรน้อย และดูแลง่าย

เมื่อจัดเตรียมทุกอย่างเสร็จเรียบร้อย เราก็ได้ย้ายระบบจากที่ทำงานบนเซิร์ฟเวอร์เดียวไปอยู่บนระบบ Cluster ใหม่ที่เตรียมไว้ และเป็นจุดเริ่มของปัญหาที่ต่อเนื่องมาจนทุกวันนี้

ปัญหาแรกที่เราพบในเวลานั้น คือ i/o utilization สูงมาก จนเว็บล่มเกือบทั้งวัน ทั้งๆที่เป็นวันหยุดยาวซึ่งเพื่อนสมาชิกส่วนใหญ่จะไปเที่ยวกัน อยู่เล่นเว็บกันไม่มาก ด้วยความที่เป็นมือใหม่และไม่วิเคราะห์ปัญหาให้ดี ผมด่วนสรุปว่า SAN storage ที่ซื้อมาคงจะตัวเล็กไป ไม่พอที่จะรองรับ iops ที่ต้องการ จึงตัดสินใจสั่งซื้อ SAN storage เพิ่มเพราะร้อนใจอยากจะแก้ปัญหา ให้เว็บสามารถให้บริการได้เร็วๆ แต่สุดท้ายตรวจพบว่าปัญหาในเวลานั้นไม่ใช่ประเมินขนาดของ SAN ต่ำไป (สุดท้าย SAN ที่สั่งซื้อเพิ่มมาก็มีประโยชน์ในภายหลังซึ่งจะเล่าต่อไป)  ปัญหาจริงๆคือแค่ไม่ได้ปิดตัวแปรที่ชื่อ atime ของ File System ตัวใหม่ทำให้ทุกครั้งที่มีการอ่านข้อมูลระบบจะบันทึกเวลาในการอ่านข้อมูลกลับลงไปในฮาร์ดดิสก์ล่าสุดลงไปด้วย ทำให้ IO ที่เกิดจาก atime สูงมาก ซึ่งเมื่อปิดตัวแปร atime ไป i/o ก็ลดลงจนเว็บก็สามารถใช้งานได้ตามปรกติ

ฟังดูเหมือนเรื่องน่าจะลงเอยด้วยดี ยกเว้นเรื่องที่ผมไปสั่งซื้อ SAN เพิ่มโดยไม่จำเป็นมาอีก 1 ชุด แต่ผลออกมาเป็นว่าเรื่องที่น่าจะจบมันไม่ยอมจบง่ายๆ อย่างที่หวังไว้ครับ

ระบบทำงานอย่างราบรื่นได้ประมาณ 1 เดือน ก็เริ่มแสดงอาการแปลกๆ ซึ่งในเวลานั้นเราเองก็ยังไม่รู้ว่าเกิดอะไรขึ้น รู้แต่ว่าเว็บช้าเป็นระยะๆ เมื่อเข้าไปดู ก็เหมือนกับว่าเราเจอปัญหา i/o อีกแล้ว แต่คราวนี้ ไม่เกี่ยวกับตัวแปร atime เพราะได้ปิดไว้แล้วเรียบร้อย ก็ได้พยายามทดลองหลายๆอย่าง ทั้งการเพิ่มเซอร์ฟเวอร์เข้าไปในระบบ การปรับตั้งค่าต่างๆของระบบ i/o และระบบ file system ซึ่งไม่ว่าจะทำอย่างไร ปัญหาก็ไม่ส่อแววว่าจะดีขึ้นเลยแม้แต่น้อย แถมมีอาการหนักขึ้นเรื่อยๆ โดยมีปรากฏการที่เพื่อนๆตั้งชื่อให้ว่า "กระทู้ด๋อย" เกิดขึ้นถี่มาก

ในเวลานั้นเราเองเป็นมือใหม่มากๆ และที่อยู่ตรงหน้าเป็นของที่เราไม่รู้จักมากมาย ทั้ง OCFS2 ทั้ง SAN ทั้ง SAN Switch เครื่องไม้เครื่องมือที่จะเข้าไปวิเคราะห์ปัญหาทั้งใน SAN หรือ SAN Switch ก็ไม่มีอยู่ในมือ ในช่วงนั้นระบบถือว่ารวนมากเป็นประวัติการ ทางทีมงานและที่ปรึกษารวมไปถึงซัพพลายเออร์ก็พยายามแก้ปัญหากันเต็มที่ แต่ก็เป็นเรื่องที่ไม่ง่ายเลย เพราะในเวลานั้นชี้ชัดไม่ได้ด้วยซ้ำไปว่าปัญหามาจากที่ไหน ระหว่าง OCFS2 หรือSAN หรือ SAN Switch

โดยส่วนตัว ช่วงเวลานั้นเป็นช่วงเวลา 3-4 เดือนที่วิกฤติที่สุดในชีวิตผม เพราะปัญหาที่อยู่ตรงหน้ามันเกินสติปัญหาแค่หางอึ่งที่ผมมีไปมาก แต่ก็ไม่สามารถจะละจากมันไปได้ ในเวลากลางวันงานปรกติก็ยังต้องทำอยู่ แถมด้วยการเฝ้าหน้าจอของเครื่องเซอร์เวอร์ เวลากลางคืนก็ไม่ได้ทำอะไรเลยนอกจากนั่งเฝ้าหน้าจอของเซอร์เวอร์ต่อ เพื่อคอยปิดเปิดระบบ เพื่อให้เว็บยังให้บริการอยู่ได้จนหลังเที่ยงคืนจึงปล่อยไปได้ ทำแบบนี้ตลอดทุกวันไม่มีวันหยุด

แต่สุดท้ายการเฝ้าหน้าจอเซอร์ฟเวอร์วันละกว่า 15 ชั่วโมงก็ได้ประโยชน์บ้างนิดหน่อย คือในที่สุดผมไปพบโดยบังเอิญว่าในเวลาที่ i/o สูงจนระบบมีปัญหานั้น แค่พยายามจะเขียนไฟล์เล็กๆลงใน SAN ก็ยังใช้เวลานานมาก และเมื่อ consultant ได้ลองเจาะเข้าไปดูในประเด็นนี้ ก็พบว่าการเขียนไฟล์ที่โดยปรกติจะใช้เวลาไม่ถึงหนึ่งในพันของวินาทีจะกลายเป็นหลายวินาทีหรือเกือบนาทีในเวลาที่ระบบมีปัญหา

ผลจากตรงนี้ทำให้สร้างความมั่นใจในระดับหนึ่งว่า ปัญหาน่าจะอยู่ที่ File System ค่อนข้างแน่นอน ไม่ใช่ที่ Storage หรือที่ Switch แต่ปัญหาก็คือ แล้วปัญหามันคืออะไรกันแน่และที่สำคัญกว่านั้นคือ "แล้วเราจะแก้ปัญหาได้อย่างไร"

ในช่วงนั้นเป็นเวลาที่ SAN ซึ่งเดิมผมคิดว่าสั่งเข้ามาโดยไม่จำเป็นเพราะวิเคราะห์ปัญหาผิดทางในช่วงแรกเข้ามาส่งมอบ พร้อมๆกับอุปกรณ์ต่อเชื่อมสำหรับเพิ่ม server เข้าไปใน cluster ซึ่งเราก็เลยได้ใช้โอกาสนี้ทำระบบที่มีเครื่องมากขึ้นโดยใช้ SAN ชุดใหม่นี้เป็นตัวใช้งานและกะว่าจะเก็บ SAN ชุดเก่าเอาไว้วิเคราะห์ปัญหา โดยสมมุติฐานในเวลานั้นคือ ปัญหาน่าจะมาจากเวลาที่มี loadมาก ซึ่งถ้ามีเซอร์ฟเวอร์มากขึ้น แต่ละเครื่องทำงานน้อยลง ปัญหาก็น่าจะหายไป ด้วยความโชคดีที่เราตัดสินใจ ย้ายเว็บโดยใช้วิธีเตรียมระบบใหม่แยกออกมาอีกระบบที่ใหญ่ขึ้น แล้วย้ายข้อมูลจากระบบเก่ามาที่ระบบใหม่แทนที่จะเพิ่มเครื่องเข้าไปใน cluster เดิม ซึ่งโชคดีอย่างไรจะเล่าต่อไป

หลังจากที่อัพระบบใหม่ขึ้นมาเราโล่งใจกันมากเพราะดูเหมือนเมื่ออยู่บนระบบที่มีจำนวนเครื่องมากขึ้นอาการมันหายไป เว็บทำงานได้เป็นปรกติดี ซึ่งเราทุกคนก็คิดกันว่าปัญหาคงจบแล้ว ทุกอย่างก็ดูสมเหตุผล คือเมื่อมีเครื่องมากขึ้นแต่ละตัวแบ่งงานกันไปทำโหลดของแต่ละตัวก็น้อยลง ปัญหาก็ดูจะถูกแก้ไข แต่แล้วเมื่อเวลาผ่านไปประมาณหนึ่งเดือนฝันร้ายมันก็กลับมาอีก เว็บเริ่มล่ม กระทู้เริ่มด๋อย มากขึ้นเรื่อยๆ และมันมาถึงจุดที่ผมคิดว่าคงไม่ใช่เรื่องเครื่องไม่พอแล้วละ สงสัยจะเป็นปัญหาอะไรสักอย่างกับตัว file system OCFS2 แน่เลย โดยในจำนวนโหลดที่เรามี ลักษณะโปรแกรมที่เราเขียนไว้ File System มันดูจะทำงานได้ประมาณ 1 เดือน ก่อนที่จะมีอาการผิดปรกติ โดยความผิดปรกติที่สังเกตุเห็นได้ชัดคือ i/o ทางฝั่ง write ซึ่งในเวลาปรกติใช้่แค่ 600-800 ครั้งต่อวินาทีจะพุ่งขึ้นไปถึง 10,000 ครั้งต่อวินาที ซึ่งในช่วงนั้นจะมีอาการที่เซอร์ฟเวอร์เขียนไฟล์ลง SAN ได้ช้ามาก จากที่เคยเขียนไฟล์เสร็จได้ในเวลาไม่ถึงหนึ่งในพันของวินาทีกลายเป็นค้างรอจนเกือบๆนาทีจึงจะเขียนได้ และในเวลานั้นจะเกิดอาการที่เป็นผลพวงจากที่ระบบไม่สามารถเขียนไฟล์ได้ตามมาอีกสารพัด ทั้ง CPU load สูง , IO wait สูง, เว็บอืด, กระทู้ด๋อย ฯลฯ

ตอนนั้นถึงเวลาที่เราคิดว่าคงจะต้องลาจาก OCFS2 แล้ว และตัดสินใจหันไปหา GFS2 ที่เป็น cluster file system ที่ฮิตที่สุด โดยคิดว่าถ้าคนทั้งโลกใช้กันได้เราก็น่าจะใช้ได้ แต่การณ์กลับกลายเป็นว่าเราหนีเสือปะจรเข้อย่างไรอย่างนั้น กล่าวคือเกือบจะทันทีที่เราย้ายไปใช้งาน GFS2 เราพบว่าเซอร์ฟเวอร์มีอาการโหลดสูงมากอย่างเห็นได้ชัด เพียงแต่ไม่ใช่ช่วงๆอย่าง OCFS 2แต่เกือบจะตลอดเวลา ซึ่งจริงๆเรื่องนี้ก็ตรงกับผลการทดสอบของเราเมื่อหลายเดือนก่อนหน้านั้นช่วงที่เปรียบเทียบระบบ Cluster File System เพื่อเลือกว่าจะใช้ตัวไหน แต่เวลานั้นเราคิดว่าเว็บช้านิดหน่อยก็ดีกว่าปล่อยให้กระทู้ด๋อย และต้องหยุดเว็บเป็นช่วงๆ และก็เตรียมที่จะเพิ่มเซอร์ฟเวอร์เข้าไปในระบบอีกครั้งเพื่อจะให้ระบบดีขึ้นต่อไป

ยังไม่ทันได้ทำอะไรมาก GFS2 ก็เกิดปัญหาขึ้น ปัญหาครั้งนี้หนักระดับระเบิดลงเลยครับ คือหลังจากให้ GFS2 ทำงานไปได้ไม่กี่วันยังไม่ทันได้พักหายใจกัน ก็เกิดอาการ File System Crash เลยครับคราวนี้ อาการหนักขนานที่ GFS2 ขึ้นเป็น Permanent IO Error อ่านข้อมูลได้บ้างแบบแปลกๆ แต่เขียนข้อมูลไม่ได้เลย สำหรับเราไม่มีทางเลือกมากนักนอกจากต้องตัดสินใจ Fallback ข้อมูลเป็นครั้งแรกในช่วงอายุของเว็บที่เปิดบริการมา 14 ปี และแน่นอนครับ เมื่อเจอระเบิดลงหนักขนาดนั้น เราก็เลยต้องเซย์กู๊ดบายกับ GFS2 กลับมาซบ OCFS2 อีกครั้งหนึ่ง
 
แต่อย่างน้อยในครั้งนี้ เราพอจะจับไต๋ได้แล้วว่า OCFS2 จะเป็น Cluster File System ที่ใช้งานได้ดี ให้ performance ที่ดี แต่ด้วย ปริมาณการใช้งาน หรือปริมาณเครื่อง หรือวิธีการเขียนโปรแกรม หรืออะไรสักอย่าง ฯลฯ ที่เป็นเราอยู่ในเวลานี้ ภายในช่วงเวลาประมาณ 30 วันอาการก็จะเริ่มเพี้ยนๆไป จากจุดนั้นมาเราได้พยายามสารพัดอย่าง ไม่ว่าจะคุยกับทีมที่สร้าง OCFS2 ขึ้นมาเพื่อให้ช่วยหา bug , ทดลองปรับเปลี่ยนตัวแปรต่างๆ, ยักย้ายถ่ายเทข้อมูลไปไว้ที่นู่นที่นี่ ฯลฯ โดยไม่ลืมว่าทุกๆ 30 วัน จะต้องปิดระบบเพื่อทำการก๊อปปี้ข้อมูลใหม่เพื่อให้ File System สามารถทำงานได้โดยไม่มีปัญหา (เดากันว่ามีผลคล้ายๆกับการทำ defragment บนเครื่อง PC) ซึ่งเป็นที่มาที่ท่านสมาชิกเห็นว่าเว็บจะมีการปิดเพื่อทำ File System Maintenance ประมาณเดือนละหนึ่งครั้งในทุกวันนี้

คำถามตอนนี้คือแล้วเราจะแก้ปัญหาตรงนี้อย่างไร การปิดระบบเพื่อก๊อปปี้ข้อมูลทุกๆ 30 วันไม่ใช่สิ่งที่ระบบคอมพิวเตอร์ทั่วๆไปเขาทำกันแน่นอน หลังจากที่เราได้คุยกับทีมที่สร้าง OCFS2 อยู่หลายเดือน ลองปรับหลายๆอย่างจนไม่รู้จะปรับอะไร เราเริ่มคิดว่าคงไม่ได้เห็นการแก้ปัญหาในเร็ววันแน่ และด้วยความที่ OCFS2 เป็น Open source ที่ใช้ฟรีการจะไปเร่งรัดหรือขอความช่วยเหลือก็คงอยู่ในวงจำกัด ดังนั้นสถานะการณ์ ณ เวลานี้คือเราตัดสินใจ ลงทุนกับ GPFS ซึ่งเป็น Cluster File System ของบริษัท IBM ที่อยู่ในตลาดมานานและน่าจะเป็น File System ที่สเถียรมากตัวหนึ่ง การลงทุนครั้งนี้เป็นเลขหลายหลัก หากถามว่าจะแก้ปัญหาได้ไหม ? จะมีปัญหาเหมือนเดิมไหม ? จะเกิดปัญให้ใหม่ขึ้นอีกหรือเปล่า ? ฯลฯ ก็ต้องตอบกันตามตรงครับว่า "ก็ไม่แน่"  แต่ที่เราเชื่อคือด้วยความที่ไม่ใช่ Open Source ที่ดาวน์โหลดมาใช้ฟรี หากมีปัญหา การสนับสนุนก็น่าจะเป็นไปโดยรวดเร็วกว่าซึ่งน่าจะพาเราไปที่ต้นตอของปัญหาและสามารถแก้ปัญหาที่ต้นเหตุได้เร็วขึ้น และช่วงนี้คือช่วงที่รอเครื่องและ Cluster File System ตัวใหม่ส่งมอบและเตรียมการนำเข้าไปใส่ในระบบ ซึ่งระหว่างนี้ก็จะมีการปิดเว็บเพื่อก๊อปปี้ข้อมูลใหม่ประมาณเดือนละครั้งไปพลางๆ

จบการเล่าเรื่องที่ยาวที่สุดที่เคยเขียนมา และขอคารวะทุกท่านที่อ่านจบครับ ส่วนท่านที่อ่านไม่จบก็ไม่ต้องเสียใจครับ เพราะตัวผมถ้าต้องอ่านข้อเขียนนี้เอง ก็ยอมรับอย่างไม่อายเลยว่าคงจะอ่านไม่จบเหมือนกันครับ .... :)

( ลิ้งค์ของ คุยกับพันทิป#1 http://www.pantip.com/cafe/isolate/topic/M10890139/M10890139.html )

แก้ไขเมื่อ 01 ก.ย. 54 11:42:30

แก้ไขเมื่อ 01 ก.ย. 54 11:31:11

จากคุณ : คุยกับพันทิป
เขียนเมื่อ : 1 ก.ย. 54 11:25:10




[ต้องการแตกประเด็นจากกระทู้เดิมคลิกที่นี่] [กติกามารยาท] [Help & FAQ] 
ความคิดเห็น :
  PANTIP Toys
จัดรูปแบบ :
ไฟล์ประกอบ :
  Help
ชื่อ :
 

ข้อความหรือรูปภาพที่ปรากฏในกระทู้ที่ท่านเห็นอยู่นี้ เกิดจากการตั้งกระทู้และถูกส่งขึ้นกระดานข่าวโดยอัตโนมัติจากบุคคลทั่วไป ซึ่ง PANTIP.COM มิได้มีส่วนร่วมรู้เห็น ตรวจสอบ หรือพิสูจน์ข้อเท็จจริงใดๆ ทั้งสิ้น หากท่านพบเห็นข้อความ หรือรูปภาพในกระทู้ที่ไม่เหมาะสม กรุณาแจ้งทีมงานทราบ เพื่อดำเนินการต่อไป



Pantip-Cafe | Pantip-TechExchange | PantipMarket.com | Chat | PanTown.com | BlogGang.com