Archive for May, 2008

0003 | รับมือเว็บ 250 req/sec

Saturday, May 3rd, 2008 Posted in PHP Coding, Web Server | 3 Comments »

จากหน้าที่แล้ว ที่เราคุยกันถึงเรื่อง DNS Round Robin
สาเหตุที่ต้องใช้ DNS Round Robin มันก็เนื่องมาจากเจ้านี่แหละครับ

page request 2 may 2008

* ข้อมูลสถิติ การเข้าใช้งานเว็บ ในวันที่ 2 พฤษภาคม 2551

นี่เฉพาะหน้าเว็บนะ ยังไม่รวม announce process อีกวินาทีละกว่า 100 ครั้ง
ซึ่งไม่สามารถเก็บสถิติได้ เพราะตัวสถิติจะล่มไปซะก่อน
และคนที่เข้าผ่าน URL สำรอง ซึ่งระบบเก็บสถิติไม่ยอมเก็บอีกไม่รู้กี่ครั้ง

เมื่อเจอเหตุการณ์แบบนี้ขึ้น ก็เลยต้องปรับระบบกันทุกทางเลยครับ

ล่าสุดที่เพิ่งปรับ สืบเนื่องมาจากมีคนมาทักใน MSN ว่า

msn ถามเรื่อง gzip encoding

ก็เลยนึกขึ้นมาได้ว่า ไอ้เว็บนี้เราเล่นเปิด gzip compression ไว้ทั้งเว็บเลยนี่หว่า
ปกติถ้าเว็บมีคนเข้าใช้งานไม่เยอะมันก็ไม่น่าจะมีปัญหาอะไรหรอกครับ
แค่ว่า CPU มัน process ไม่ทัน ช่วง Peak ทีนึง ทั้ง CPU ทั้ง RAM พร้อมใจกันทำงานเต็ม process 100% รวด
ก็เลยต้องหาทางลดการทำงานมันลงอีกหน่อย

จากสถิตินั่น ที่น่าสนใจคืออันที่สามครับ (ฮา)
มันคือเกมป๊อกเด้ง แบบ Pure HTML เน้นๆ ครับ ไม่มี ajax ไม่มี stand in
แถมตั้ง refresh ทุกๆ 20 วินาที คนเล่นก็ติดกันงอมแงม ก็เลยมีการใช้งานโคตรเยอะ (ฮาๆ)

เพิ่งมาปิดตอนตีสอง คนไปหลับไปนอนหมดแล้ว
เดี๋ยวตอนสี่ห้าทุ่มวันนี้ (3 พ.ค.) จะมาอัพเดทผลงานอีกทีละกัน

Tags: , ,

0002 | DNS Round Robin

Saturday, May 3rd, 2008 Posted in IP Network | 1 Comment »

ระบบ DNS นี้มีลูกเล่นอย่างนึงครับ
server admin ส่วนใหญ่น่าจะรู้จักกันดีในฐานะของผู้ช่วย load balancer
คือช่วยกระจายงานออกไปตามเครื่องต่างๆ

หลักการมันง่ายๆ ครับ
แค่ชี้ Domain เดียวกันไปที่มากกว่า 1 IP ในกรณีของ IP (A) record นะ
แล้วที่เหลือก็ปล่อยเป็นหน้าที่ของเครื่องที่ค้นหา IP แล้วละครับว่าจะแจก IP ไหนให้
ซึ่งโดยมากก็จะเป็นแบบหมุนเวียน (round-robin) คือ
การสอบถามครั้งที่ 1 แจก IP ที่ 1 ให้
การสอบถามครั้งที่ 2 แจก IP ที่ 2 ให้
การสอบถามครั้งที่ 3 กลับมาแจก IP ที่ 1 อีกรอบ (กรณีมีแค่ 2 IP)

ตัวอย่างการตั้งค่าครับ ที่ใช้อยู่ปัจจุบัน
dns round robin example

ข้อดีของระบบ DNS Round Robin นี้

  1. ตั้งค่าง่ายมาก เพราะ DNS Server ส่วนมากในปัจจุบันรองรับอยู่แล้ว
  2. (ในระบบแบบพื้นฐาน) ไม่ต้องมีการติดตั้งอุปกรณ์ใดๆ เพิ่มเติม แม้แต่ชิ้นเดียว
  3. ช่วย network redundant ได้นิดหน่อย คือถ้าล่ม 1 IP, ที่เหลือก็ยังสามารถทำงานได้

แต่ในขณะเดียวกัน ข้อเสียใหญ่ที่สุด ที่เกิดขึ้นมาเพราะอยู่ในระบบ DNS เลยครับ
” มันติด cache ”
ทำให้เราไม่สามารถคาดคะเนผลลัพท์ได้เลยว่า เครื่องลูกข่ายจะสอบถามแล้วได้ IP อะไรตอบกลับไป
ทำให้ไม่สามารถควบคุมการเข้าถึง server ได้เลยว่า จะให้เน้นไปที่ server เครื่องไหน

ดังนั้น เครื่องที่จะทำ DNS-RR นี่ก็เลยควรจะเป็นเครื่องที่ spec ใกล้เคียงกันทั้งหมดครับ
ไม่เช่นนั้นจะเกิดเหตุการแบบนี้ครับ

server 1: CPU Xeon (p4) 3.0 GHz HyperThreading — load average: 2x.xx, 2x.xx, 1x.xx
server 2: CPU Xeon X3210 QuadCore 2.13GHz — load average: 3.xx, 2.xx, 2.xx

ผลปรากฎว่า คนไหนที่เข้าไปโผล่เครื่อง server 1 อืดจนแทบทำอะไรไม่ได้เลย T_T
ชีวิตมันน่าเศร้า

Tags: , ,