GotoKnow
  • เข้าระบบ
  • สมัครสมาชิก
  • แผงจัดการ
  • ออกจากระบบ
GotoKnow

บทเรียนข้อแรกของ AJAX: อย่าใช้ AJAX มากถ้าเครื่องแม่ข่ายยังไม่พร้อม

ช่วงนี้ KnowledgeVolution เพิ่ม features ที่ใช้เทคโนโลยี AJAX (Asynchronous JavaScript and XML) อยู่หลายอย่างด้วยกัน อย่าหนึ่งคือ Page Visit จะ update เองอัตโนมัติทุก 10 นาที

วันนี้ผมไปประชุมตอนเช้า พอผมกลับมาพบว่า GotoKnow ช้ามาก

ที่จริงแล้วสาเหตุของการที่อยู่ๆ ระบบช้ามากขึ้นมานั้นเกิดได้หลายประการ แต่ใจผมคิดขึ้นมาทันทีว่าคงเป็นเพราะการ update ทุกสิบนาทีนั่นแน่แล้ว เรื่องนี้ AJAX เป็นจำเลยที่หนึ่ง

เพราะหากผู้ใช้เปิดเครื่องทิ้งหน้าไหนของ GotoKnow ไว้เฉยๆ หน้านั้นจะทำการ request ข้อมูลจากเครื่องแม่ข่ายเองอัตโนมัติทุกสิบนาที

แต่ถ้าเป็นหน้าที่เป็นสารบัญของบล็อกด้วยแล้ว นั่นคือ 15 requests ทุกสิบนาที

ถ้าเปิดไว้สักสิบหน้าแล้วไปทำธุระเดี๋ยวค่อยมาอ่านก็หมายความว่า... โอ้ย ไม่อยากคำนวน

ยิ่งผู้ใช้หลายคนทำเช่นนี้แล้วยิ่งเพิ่ม load เข้ามาในระบบมหาศาล

ต้องขอเน้นว่าเรื่องนี้ไม่ใช่ความผิดของผู้ใช้นะครับ แต่เป็นความผิดของผู้พัฒนาที่เห็นช้างตัวใหญ่ๆ ชื่อ Google ขี้แล้วไปขึ้ตามช้าง

เวลาเห็น Gmail หรือ Google Reader มัน update อัตโนมัติแล้วชอบใจเลยทำบ้าง ผลลัพธ์คือเครื่องแม่ข่ายแน่นิ่งไปตามระเบียบ

เรื่องนี้เขียนไว้เตือนใจให้รู้ว่า การใช้ AJAX นั้นต้องคิดให้รอบคอบ เพราะเผลอๆ จะเป็นการเพิ่ม load ให้ระบบในปริมาณมหาศาลโดยไม่ได้ตั้งใจ

และที่ยากคือ แม้เราจะแก้ที่เครื่องแม่ข่ายแล้ว แต่เราไม่สามารถไปปิด browser ของผู้ใช้ได้ ดังนั้น request ก็จะยังส่งมาหาที่เครื่องแม่ข่ายเรื่อยๆ ตราบใดที่ผู้ใช้ยังเปิด browser หน้านั้นทิ้งไว้อยู่

เป็นความพยายามสร้าง DDoS (Distributed Denial-of-Service) ให้แก่ตัวเอง ยิ่งถ้าช่วงนั้นมีใครพยายาม DDoS เราอยู่ด้วยก็ยิ่งไปกันใหญ่

สรุปว่า AJAX ต้องคิดให้ดีก่อนใช้

บันทึกนี้เขียนที่ GotoKnow โดย 

คำสำคัญ (keywords): ajaxบทเรียนddos
หมายเลขบันทึก: 77425
เขียน:
แก้ไข:
ความเห็น: 17
อ่าน:
สัญญาอนุญาต: สงวนสิทธิ์ทุกประการ

ความเห็น (17)

ขอบคุณครับ...  เคยได้ยินปัญหานี้มาเหมือนกัน...  เลยแหยง ๆ  ไปช่วงหนึ่ง...  แต่ที่ได้ยินมาไม่ละเอียดมากนัก...  อาจารย์อธิบายปัญหา  ผลที่เกิด  และคำแนะนำไว้ดีมากเลยครับ...

อาจารย์ครับ

ขอถามแบบคนไม่รู้

เพราะ แม่ข่ายเราตัวเล็กมากๆใช่มั้ย ...เมื่อเทียบกับกูเกิ้ล

หากเราไม่ใช้ ajex จะได้ไหมครับ ช่วงวันนี้ Gotoknow ช้าเพราะสังเกตจาก ADSL ที่ใช้อยู่เทียบกับ WEb อื่น Gotoknow ช้ามากครับ

คือผมสนใจ ผมเห็นบางศัพท์ และปฏิบัติการของมันบางอย่าง เลยเร้าความสนใจผม

เช่น

Ajex

DDos  เป็นต้น

 

ผมทำลิงค์ไปยัง Wikipedia ให้แล้วนะครับ แต่ไม่แปลให้ เป็นการให้ฝึกภาษาอังกฤษ แต่ไม่ต้องท้อใจถ้าอ่านไม่ค่อยรู้เรื่องนะครับ เพราะมันเป็นเรื่องทางเทคนิคครับ

ตอนนี้ผมได้บทเรียนกับ Ajax แล้ว คาดว่าจะใช้อย่างระมัดระวังมากยิ่งขึ้นครับ 

อุอุ...

ขอบคุณครับ อาจารย์

ฮือ ฮือ!!!

cluster จะช่วยได้ไหมครับ สำหรับปัญหานี้

ไม่ทราบว่าอาจารย์ลองดู

joyent-makes-rails-app-go-to-4-000-req-sec

หรือยัง อาจจะช่วยได้ แต่ก็ต้องเปลี่ยน hardware ด้วย เขาก็ใช้ cluster ช่วยเหมือนกัน แต่เขาทดลองกับหน้าที่มี content น้อยๆ นะครับ(แค่กวาดตาคร่าวๆ ยังไม่ได้อ่านหมด)

หวังว่ามันคงช่วยอาจารย์ได้บ้างนะครับ

cluster เป็นวิธีในการแก้ปัญหา load เยอะๆ ที่ดีครับ ดีกว่าการซื้อเครื่องแม่ข่ายใหม่ แต่เราไม่มีเครื่องในตอนนี้ครับ กำลังสั่งเครื่องแม่ข่ายเพิ่มอยู่ครับ ได้เครื่องมาเพิ่มเมื่อไหร่ค่อยเพิ่ม AJAX features ที่ fancy ;-)
ตามมาดูค่ะ 

ขอขอบคุณอาจารย์ธวัชชัย...

  • บันทึกนี้ทำให้เข้าใจเลยว่า ก้าวของการพัฒนาแต่ละก้าวมีบทเรียนเสมอ
  • บางทีอาจจะช้าเพราะพวก BloG TaG ที่ชอบส่งจดหมายลูกโซ่คล้ายๆ แชร์แม่ชม้อยในอดีตก็เป็นได้ครับ...

ขอขอบคุณ...

แฮ่ะๆ blog-tag น่าจะไม่ใช่ปัญหาครับ แต่เป็นที่ AJAX นี่ละครับ พอเอาออกก็เร็วขึ้นมาได้ครับ
เครื่องลูกข่ายด้วยนะครับ T_T

ผมเห็นว่าคุณวีร์ชี้ตรงประเด็นเลยครับ ความเร็วระหว่างเครื่องลูกข่ายกับเครื่องแม่ข่ายน่าจะเป็นปัญหาใหญ่ที่สุด

เมื่อใช้ AJAX มีการถ่ายโอนเพื่อปรับปรุงข้อมูลระหว่างเครื่องมากขึ้น แต่หากเครื่องลูกข่ายรับส่งข้อมูลได้ช้า (โมเด็มที่อยู่สุดขอบจักรวาล) ก็จะทำให้เครื่องแม่ข่ายหยุดรอ ซ็อกเก็ตติดแหงก

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

การเอา AJAX ออกน่าจะเป็นทางแก้ไขที่ตรงประเด็นแล้วครับ Blog-tag คงจะมีส่วนในลักษณะที่มาเพิ่มโหลด->เพิ่มจำนวนหน้า->เพิ่มการใช้ซ็อกเก็ต แต่ต้นเหตุเริ่มที่ AJAX ครับ

ผมคิดว่าอาจารย์หมอวัลลภหมายถึง blog-tag ความลับ 5 ประการครับ เรื่อง blog-tag นี้ไม่มีปัญหาครับ

แต่ถ้าระบบใส่ tag ที่เราใช้ AJAX นั้น ตรงนี้เพิ่ม load ให้แก่ระบบแน่นอนครับ

เดี๋ยวจะพยายามลด AJAX ให้เหลือเฉพาะที่จำเป็นครับ

ขอบคุณที่ให้ความกระจ่างค่ะ ก็คิดๆ อยู่ว่าช่วงก่อน G2K อืดมาก เพราะเจ้า AJAX นี่แหละนะ

จะระวังถ้าได้ใช้ค่ะ

^___^

ขอบคุณสำหรับความรู้ครับ

อิอิ เจ๋งนะ
แต่ เราสร้างปุ่มไว้หลอก ๆ เหมือนว่ามันจะ Binding ใหม่ทุก ๆ ครั้ง ก็น่าจะเช่วยแก้ได้นะ

แต่การใช้ajax มันก้อดีมากเลยน่ะครับ เพราะทำให้ เว็บไซต์ ทันเหตุทันการณ์มากขึ้นเยอะ เป็น dynamic มากขึ้น แต่มันช้าก้อ ต้อง ดูอะครับว่า มันเหมาะสมรึป่าว

เป็นความรู้ใหม่ (สำหรับผม)

ขอบคุณมากครับ