มาทดสอบความเร็วอินเตอร์เน็ตของเซิฟเวอร์ที่เราใช้โดยไม่ต้องลง GUI กัน

เนื่องจากผมมีความจำเป็นบางอย่าง ต้องทำการทดสอบความเร็วอินเตอร์เน็ตของเซิฟเวอร์ผม (ตอนลง H@H Client ต้องส่งหลักฐานความเร็วอินเตอร์เน็ต) แต่ว่าผมไม่อยากลง GUI ให้เป็น Overhead เซิฟเวอร์ เลย Google เอา เจอ 1 ลิงค์ ที่นี่ครับ

สิ่งที่ต้องการ

  • SSH เข้าเซิฟเวอร์ที่เราจะทดสอบ
  • Python เวอร์ชัน 2.4.3+
  • wget หรือ curl หรืออะไรก็ได้ที่โหลดไฟล์ได้ ตามสะดวกเลย

มาลองเล่นกัน

  1. ขั้นแรก SSH เข้าเซิฟเวอร์ก่อน
  2. ต่อมา ต้องโหลดตัว Speedtest-cli ก่อน โดยใช้คำสั่งนี้
  3. ต่อมา เราก็สามารถใช้ได้เลย โดยใช้คำสั่งต่อไปนี้

    เราจะได้ ข้อมูลมาประมาณนี้ครับ

    ซึ่งในข้อมูลจะมีบอกว่า Test จากไหน และ Test ไปที่ไหน (ในตัวอย่างไม่ได้ระบุปลายทาง มันจะเลือกที่ที่ใกล้ที่สุดครับ) ความเร็ว Download และ Upload เท่าไหร่

    เดี๋ยวก่อน มันยังไม่หมดแค่นั้น เรายังสามารถให้ script นี้ทำการแชร์ภาพเป็นหลักฐานให้คนอื่นได้ด้วย โดยสั่ง

    (เติม –share ต่อท้าย) จะได้ผลลัพธ์คล้ายๆเดิม แต่มีลิงค์สำหรับแชร์ติดมาด้วย

  4. สามารถใช้ คำสั่งนี้เพื่อดู Option ต่างๆที่ใช้ได้ครับ

ถ้าอยากทดสอบความเร็วออกต่างประเทศละ?

ง่ายนิดเดียวครับ ขั้นแรก โหลดไฟล์ด้านบนมาก่อนครับ จากนั้น

  1. ให้สั่งคำสั่งนี้ เพื่อดูว่าเราทดสอบกับเซิฟเวอร์ไหนได้บ้างก่อนครับ
  2. จะได้ผลลัพธ์ประมาณนี้มาครับ

    2 บรรทัดแรกไม่ต้องสนใจครับ สนใจบรรทัดถัดๆมาดีกว่าครับ มันจะจัดในรูปแบบ

    อย่างเช่นผมต้องการทดสอบความเร็วไปที่ประเทศญี่ปุ่น ผมก็เลือกบรรทัดนี้

    จากบรรทัดที่ผมเลือกจะเห็นว่า ID เป็น 4497 เราก็จะเอาตรงนี้ไปใช้กับขั้นต่อไปครับ
  3. เราจะใช้คำสั่งต่อไปนี้ เพื่อบังคับให้มันใช้เซิฟเวอร์ปลายทางที่เรากำหนด

    เพียงเท่านี้เราก็ทดสอบความเร็วออกนอกประเทศได้แล้วครับ
    เราสามารถใช้คำสั่งนี้ร่วมกับ –share เพื่อเอาลิงค์ภาพได้ครับ

ติดตั้ง/ปรับแต่ง DirectAdmin เพื่อให้รองรับจำนวนคนจำนวนมาก

อันนี้เป็นประสบการณ์กากๆของผมที่ทำต้องจัดการให้เซิฟเวอร์ที่ใช้ DirectAdmin อยู่ สามารถรองรับจำนวนคนได้เยอะๆครับ วิธีการง่ายๆดังนี้ครับ

  1. ปรับ Web Server ให้ใช้ Nginx เป็น Reverse Proxy (อ้างอิงวิธีการจาก ลิงค์นี้)
    1. ก่อนอื่นสำหรับ คนที่ติดตั้ง DirectAdmin ไปแล้วต้องมั่นใจว่า CustomBuild ต้องมากกว่าเวอร์ชั่น 2 สามารถตรวจสอบได้โดย SSH เข้าไป แล้วใช้คำสั่งดังนี้

      ดูว่าเลขหน้าสุดเป็นเลข 2 ไหมครับ ถ้าไม่ ให้ทำการปรับ CustomBuild เป็นเวอร์ชั่น 2 ครับ โดยสามารถทำได้ตามลิงค์นี้ครับ หรือสั่งคำสั่งด้านล่างนี้ครับ (คำเตือน Backup ทุกอย่างก่อน Update ทุกครั้ง)
    2. ติดตั้ง Nginx เป็น Reversed Proxy ซึ่งตรงนี้ทาง DirectAdmin เริ่ม Support การติดตั้งอัตโนมัติแล้ว สามารถทำได้ตามคำสั่งด้านล่างนี้ครับ
    3. เมื่อติดตั้งเสร็จแล้ว มันยังมีปัญหานิดหน่อยครับ คือตัว Apache ทีให้บริการ Web App นั้นมอง IP ของเซิฟเวอร์เองเป็น Client เนื่องจากวิ่งผ่าน Nginx จึงต้องลง mod เพิ่ม ดังนี้ครับ

      จากนั้นไปที่ /etc/httpd/conf/extra/httpd-includes.conf  แล้วเพิ่มข้อความต่อไปนี้ลงล่างสุดครับ
  2. ปรับแต่งเซิฟเวอร์เพื่อให้รองรับคนจำนวนมากได้ (จำเป็นค่อนข้างมาก ไม่งั้นอาจจะเจอ Bad Gateway หรือ Gateway Timeout บ่อย)
    1. ปรับแต่ง Kernel Queue เพื่อให้รับการเชื่อมต่อจำนวนมากๆได้ โดยใช้คำสั่งต่อไปนี้

      และเพิ่มบรรทัดต่อไปนี้ลงในไฟล์ /etc/sysctl.conf
    2. ปรับแต่ง Port ที่ระบบใช้ได้ให้มากกว่าเดิม โดยใช้คำสั่งต่อไปนี้

      และเพิ่มบรรทัดต่อไปนี้ลงในไฟล์ /etc/sysctl.conf
    3. ปรับแต่งให้ปิดการเชื่อมต่อได้เร็วขึ้น เพื่อเอาไปใช้รับการเชื่อมต่อใหม่ โดยใช้คำสั่งต่อไปนี้

      และเพิ่มบรรทัดต่อไปนี้ลงในไฟล์ /etc/sysctl.conf
    4. อันนี้ผมจำไม่ได้ว่ามันทำอะไรครับ แต่เห็นเซิฟเวอร์ปัจจุบันมี และคิดว่าค่อนข้างสำคัญ

      และเพิ่มบรรทัดต่อไปนี้ลงในไฟล์ /etc/sysctl.conf
    5. ปรับแต่งเพิ่มจำนวนไฟล์สูงสุดที่ 1 โปรเซสเปิดได้ให้มากที่สุด โดยใช้คำสั่งต่อไปนี้

      และเพิ่มบรรทัดต่อไปนี้ลงในไฟล์ /etc/security/limits.conf
  3. ปรับแต่งให้ Nginx ให้บริการ Static File (ไฟล์ที่ไม่ประมวลผลเช่นภาพเป็นต้น) โดยไม่ผ่าน Apache เพราะ Nginx สามารถทำงานด้านนี้ได้ดีกว่า Apache มาก (คำเตือน วิธีนี้จะทำให้ส่วนที่ถูกซ่อนไว้ โดย Password Protected Directories ของ DirectAdmin อาจจะทำให้ข้อมูลที่ถูกซ่อนบางส่วนหลุดไปได้โดยไม่ถามรหัสผ่าน แต่ผมว่าในเคสทั่วไปไม่ค่อยมีคนใช้) โดยสั่งคำสั่งดังต่อไปนี้

    เพียงเท่านี้ Nginx ก็จะให้บริการ Static File ส่วนมากให้ทันที (ผมอาจจะ list ไม่หมดเพราะผมก็ไปคัดลอกจากที่อื่นมาครับ)

เพียงเท่านี้ก็คิดว่าเซิฟเวอร์ปัจจุบันของท่านก็น่าจะรับโหลดเพิ่มขึ้นได้อีกเยอะครับ หากยังไม่สามารถรองรับได้อีก อาจจะต้องปรับ nginx ให้ cache หน้าที่ประมวลผลไว้สักหน้าละ 10 – 60 วิ แล้วแต่กรณีไป แต่พอดีที่ๆผมทำงาน Implement ระบบ Cache ด้านในไว้ เลยไม่มีปัญหามากครับ

การลบ Mail Queue ทั้งหมดออกจาก server

คือพอดี server ผมมีปัญหาว่าผมลง vBulletin ไว้ แล้วทีนี้ผมตั้งว่าถ้าเกิด error ให้ email หาผม แล้วปัญหามันเกิดเมื่อ วันนึง MySQL มันล่ม และช่วงนั้นคนเข้าเยอะ ผลคือ Mail จำนวนมากถูกส่งมาให้ผม และอีกจำนวนมากค้างอยู่ใน Mail Queue ผมรอ 3 วันมันก็ไม่หมดสักที ผมเลยต้องหาวิธีลบเมลขาออกให้หมด ผลที่ได้คือเจอเว็บนี้ครับ แล้วทำตามคำสั่งนี้ (สำหรับ DirectAdmin นะครับ ตัวอื่นผมไม่ชัวร์)