เกริ่นก่อน ไม่ทราบว่ารู้จักโปรแกรม Webserver Stress Tool กันบ้างไหม
เป็นโปรแกรมสำหรับทดสอบความอึดของ Server อธิบายง่ายๆคือตัวโปรแกรมมันจะ
ทำงานเหมือนกับเปิด ie ไปที่หน้าเว็บของเราพร้อมๆกันหลายๆหน้าต่าง
เอาล่ะครับเริ่มล่ะนะ
เกริ่นก่อน ไม่ทราบว่ารู้จักโปรแกรม Webserver Stress Tool กันบ้างไหม
เป็นโปรแกรมสำหรับทดสอบความอึดของ Server อธิบายง่ายๆคือตัวโปรแกรมมันจะ
ทำงานเหมือนกับเปิด ie ไปที่หน้าเว็บของเราพร้อมๆกันหลายๆหน้าต่าง
เอาล่ะครับเริ่มล่ะนะ
ประเด็นนี้น่าสนใจดีครับ +1 ให้ละกัน อ่านเพลินมากเลย
ปล.คงต้องรอพี่ๆที่เกี่ยวข้องเค้ามาตอบนะครับ (แต่ถ้าเป็นอย่างที่คุณพูดจริงๆ ก็แย่อยู่เหมือนกันนะครับอย่างนี้)
ปัญหาคนเข้าเวปแล้วล่ม ผมเคยเป็นอยู่บ่อยครั้ง แก้ยากอ่ะ
จะเล่าของโฮสผมบ้าง
เมื่อเดือนที่แล้ว ก้อมีน้องอีกคนปรารภว่าเว็บที่เขาทำ เปิดไม่ขึ้นแล้วล่ม
หารือกันพบว่า คนเข้าวันละแสนกว่า ip บางชม 4000-5000
ที่น่าแปลก คือ ตอนทำ stresstest ล่มเว็บเดียวครับ อีกเว็บที่อยู่ในเครื่องเดียวกันไม่ล่ม
แล้วที่เล่ามาก็จริงล้วนๆ Test กันเห็นๆ มีพยานอีก 3-4 คน ก็ดูอยู่จะๆ ว่าใช้ stresstest ตัวเดียวกัน
โค้ดอันเดียวกัน ฐานข้อมูลเหมือนกัน แต่ทำไมของที่นี่มันได้ผลไม่เหมือนชาวบ้านก็ไม่รู้
ที่น่า
ผมว่า เค้าน่าจะ กำจัด จำนวน คนเข้า ของ เวปคุณมากกว่า
หรือไม่ก็ กำจัด โหลด cpu ต่อเวป ไว้
ซึ่ง ถ้าคุณใช้ program อะไรนั้น มันก็เหมือน ขึ้นไป ถึง เพดาน ที่เค้ากำหนดไว้ให้คุณ
เลยมีปัญหา เฉพาะ เวปคุณคนเดียว ถ้าเค้าไม่จำกัด เวปอื่นก็น่ามีปัญหาด้วย
อันนี้ นึกเองนะ
ส่วน การทดสอบ เห็นด้วย เลยครับ ไม่สมควร ถ้า อยากทำ ควร ปรึกษา เจ้าของ host ก่อน เพราะ มาตรฐาน แต่ละทีไม่เหมือนกัน
บางแห่ง โดน ทดสอบ แล้วเครือ่ง เจ๊งไปเลย ลูกค้าท่านอื่น ก็คง เสียหายไปด้วย
ปล ผมว่า ปัญหา น่าจะอยู่ที่การเจรจา หรือเปล่า
อันนี้ข้อสงสัยอันแรกเลย ก็ที่โทรไปถามนี่ก็โทรไปถามว่าจำกัดอะไรรึเปล่า
แต่เค้าบอกไม่ได้จำกัดอะไร
เอาไปลองใช้กันดูมะโปรแกรมนี้ เค้ามี Trial ด้วยนะ
http://www.paessler.com/webstress
ขอบคุณครับเป็นเรื่องเล่าที่ดีจริงๆ
ล่มเวบเดียวไม่แปลกครับ แปลว่าเขา config ไว้ดีครับ ไม่ใช่ห่วย (แต่อาจจะตั้งค่าต่ำไปหน่อย)
mod ที่ทำงานเกี่ยวกับเรื่องพวกนี้ก็มี mod_throttle (เขียนผิดเปล่าไม่รู้)
อย่างโฮสผม limit connection per IP ไว้ ถ้าคุณ test ก็จะไม่รู้ว่าเข้าได้จริงๆแค่ใหน เพราะตัว test มันจะเข้าไม่ได้ แต่ ip อื่นยังเข้าได้ปกติ
แต่ยังไม่ถึงกับ limit cpu load per domain มันดูโหดไปหน่อย และก็ยังไม่จำเป็นด้วย เพราะโหลดยังไม่ถึง 1 เลย
คำตอบที่ได้จาก support น่าจะเป็นคำตอบที่ถูกต้องแล้ว เพราะเมื่อคนเข้าเยอะเวบคุณก็ต้องใช้งาน cpu สูงแน่นอน พอสูงเกินที่เขาตั้งค่าไว้มันก็ block เฉพาะเวบคุณ ไม่กระทบกับเวบอื่นๆในเครื่อง ปัญหาอยู่ที่ว่าเขา limit ไว้ที่เท่าไหร่น้อยไปหรือเปล่า เพิ่มได้อีกหรือเปล่า อันนี้น่าจะพอคุยกันดีๆได้
แต่การมาบอกว่า script เราห่วยนั้นไม่สมควรพูดสักเท่าไหร่ ไม่ค่อยมีใครอยากได้ยินหรอกครับประโยคนี้ บอกแค่ว่า เวบคุณใช้งาน CPU สูงเกินค่าที่ทางโฮสกำหนดไว้ ก็พอแล้ว
กรณีแบบนี้ คุณต้องดูเงื่อนไขนะครับ ว่ายังไง มีข้อไหนไหมครับ ที่ห้ามเว็บที่ใช้งานเยอะแบบนี้ ถ้าเงื่อนไขไม่ละเอียด หรือไม่มีบอกคุณก็ โต้แย้งเขาได้ครับ แต่มันก็น่าเห็นใจผู้บริการครับ แชร์โฮสไม่เหมาะกับเว็บคนเข้าเยอะ
ลองคุยกับคุณ pizaman ดีกว่านะครับ ว่ามีแพคเกจไหนที่เหมาะกับคุณ
พึ่งรู้ว่ามีการ
ที่ผมเคยใช้โอสท์ต่างประเทศเขาก็มี Limit เหมือนกันครับ ลิมิตจำนวน email ที่ส่งได้ต่อชั่วโมง
ลิมิตการใช้งาน CPU% และระยะเวลาการรันเป็น CPU Second ด้วย ถ้ามี Process ไหนใช้เกิน
ระบบก็จะ Kill Process นั้นอัตโนมัติ และมีลิมิต mySQL Connection ด้วย
รวมถึงลิมิตระยะเวลา Query ด้วย ถ้าเกินก็ถูก Kill
ขอบคุณคุณ haver ที่กรุณาบอกกล่าว ผมได้ตรวจสอบจากระบบ monitoring แล้วในเครื่องนั้น ได้ความดังนี้ครับ
คาดว่าที่เห็นโหลดพุ่งนั่นอาจเป็นช่วงที่มีการทดสอบโดยไม่ได้แจ้งให้เราทราบก่อน เมื่อเป็นดังนั้นอาจ tricker ระบบที่เราจูนไว้ทำให้เว็บเข้าไม่ได้ เพราะเครื่องนั้นเราใช้ตัว litespeed web server ซึ่งสามารถตั้งค่า max concurrent connection ได้ไม่ว่าจะเข้ามาที่ static file (ค่าจะสูงหน่อย) หรือ php (ค่าก็จะต่ำหน่อย) เป็นเหตุให้โดน block อยู่เว็บเดียว แต่ server ไม่ได้ down ซึ่งเหตุนี้เจ้าหน้าที่ support ที่เป็น first line support อาจจะมีข้อมูลไม่ครบทำให้จากข้อมูลที่เขาเช็คได้ ไม่สามารถระบุปัญหาที่แน่นอนได้ครับ
litespeed web server เป็น advanced web server ที่ต้องเรียนว่าดีกว่า apache เยอะมากๆ (ในหลายแง่) และข้อที่ดีที่สุดอีกอันของมันคือเรื่อง memory footprint และ security limits ต่างๆ ที่สามารถกัน DoS ได้ (ลักษณะคล้าย stress test ที่คุณทำน่ะครับ)
เมื่อเป็นเช่นนี้สิ่งที่ทางเราทำได้ คือ ลูกค้าที่แจ้งเข้ามา ก็จะต้องมีการดูเป็นเคสๆ ไปถึง package ที่ใช้บริการ รวมทั้งจะทำการพูดคุยภายในเพื่อปรับปรุงการตอบคำถามต่อไป ฯลฯ ครับ
ขอขอบคุณอีกครั้งที่รายงานให้ทราบนะครับ
+1 ให้เลยครับ
พี่เค้าตอบคำถามได้ดีจริงๆ
เป็นคำตอบที่ “ฉลาด สงบ เยือกเย็น และลึกซึ้ง” แต่ขอไม่แจงรายละเอียดนะครับ ว่าเพราะอะไร อิๆ
สงสัยจะอ่านไม่ดีนะครับ คือตัว test ผมใช้ ip ต่างหากเบอร์นึง และก็ไม่สนว่ามันจะเข้าได้หรือไม่ได้
แต่ ip อีกสองตัวแถม ตัวนึงเป็นเน็ตคนละอัน ตัวนึงเป็นเน็ตเจ้าเดียวกัน ก็เข้าไม่ได้ครับ นั่นหมายความว่าไม่ว่า IP ไหนมันก็เข้าไม่ได้ครับ
อย่างนี้เรียก Config ดีเหรอครับ
///////////////////////////////////////////
คุณ pizzaman ช่วยตอบทีครับ ว่าทำไมเวลา ทำ stresstest แล้ว IP อื่นๆมันก็เข้าไม่ได้ ที่ถูกต้องมันควรจะบล๊อคแค่ IP ที่มี Connection เกินอย่างเดียวไม่ใช่เหรอครับ
ถ้าตั้งค่าอย่างนี้แล้วโดนยิงไม่ยิ่งแย่เหรอครับ คือไอ้คนยิงมันไม่ต้องปลอม IP ไม่ต้องหา Proxy กันเลย ใช้ IP เดียวยิงโทงๆ เข้ามาเว็บก็โดนบล๊อคแล้ว
ก็ที่ Stresstest มันไม่อันตรายเพราะมันบล๊อคง่ายกว่า มันไม่ได้ซับซ้อนซ๋อนเงื่อนเหมือนโปรแกรม DOS นี่ถ้าง่ายๆอย่างนี้ยังล่ม
ถ้าใครอยากยิงเว็บผมก็ไม่ต้องหาโปรแกรม DOS กันให้วุ่นวายแล้วล่ะครับ แค่ใช้ Unix เขียน Script สั่งให้เปิดเว็บผมพร้อมกันสัก 20-30 ครั้ง เว็บก็ล่มแล้ว
อย่างนี้เหรอครับที่เรียกว่าปลอดภัย มีระบบป้องกัน DOS ได้
คือที่คุณท่านๆทั้งหลายกล่าวมาก็เข้าใจนะครับ แต่ที่ไม่เข้าใจจริงคือ เวลา Stresstest แล้วทำไมล่มอยู่เว็บเดียว ใช้ IP อะไรก็เปิดไม่ขึ้น
ถ้าเป็นอย่างที่คุณ pizzaman กับคุณ kke บอกอันนั้นไม่แปลกครับ เข้าใจว่าเป็นเพราะอะไร แต่ที่ผมลองมันไม่ใช่อย่างนั้นสิครับ
แล้วเป็นเฉพาะที่ hostpacific ด้วย ที่อื่นไม่เป็น
แล้วที่ยิ่งกว่านั้นคือไปยืม colo ของเพื่อนมาลองให้หายสงสัยนะครับ ลองทำ Stresstest บนเครื่องนั้น (Win2003 นะ ใช้ IIS6) จน CPU มัน 100%
เว็บก็ยังเปิดขึ้นครับ แต่เปิดขึ้นช้าลง แล้วใช้ IP อื่นเข้าก็ไม่มีปัญหา แม้กระทั้งลองกับโค้ดหนักๆ อย่าง PHPNuke ก็ยังไม่เจออาการที่ IP อื่นเปิดไม่ขึ้น
ส่วนเรื่อง Support ไม่ใช่ว่าเค้าได้ข้อมูลไม่ครบนะครับ เค้าไม่เคยฟังเลยต่างหาก
ขอบคุณที่ตอบตำถามครับ แต่ยังอยากรู้จริงๆว่าทำไม test แล้ว IP อื่นมันก็เข้าไม่ได้ ถ้าตอบให้ได้จะขอบคุณมากครับ
คือไม่ใช่หาเรื่อง แต่อยากจะรู้ว่ามันเป็นเพราะอะไรจะได้แก้ไขได้ครับ ถ้าเป็นที่โค้ดจริงก็จะได้แก้ แต่นี่ลองกับที่อื่นแล้วไม่เป็นอ่ะครับ
ปล. จากกราฟนะครับ ยอดที่มันพุ่งขึ้นมา
ยอดแรก stresstest ที่ 170 user
ยอดที่สอง stresstest ที่ 25 user
ยอดที่สอง stresstest ที่ 170 user
ยอดสุดท้าย stresstest ที่ 200 user
อันนี้จำลองแบบมีคนเข้าเว็บตามจำนวนที่กำหนด แล้วแต่ละคนคลิกลิงค์ภายในเว็บ 1 ครั้งภายใน 20 วินาที
ขอย้ำอีกทีว่าผลที่ได้ต่างจากที่อื่นอีก 2 ที่ ที่ทำการทดสอบเหมือนๆกันนะครับ
จากที่อ่าน เว็บคุณ haver โดนบล็อคไม่ใช่เหรอครับ ถ้าอย่างนั้นก็เข้าไม่ได้ซิครับ
ไม่ว่า IP ไหนก็เข้าไม่ได้หรอกครับ หรือว่ายังไง
ผมอ่านดีแล้วครับ ที่ยกตัวอย่างไปเป็นการทำงานของโฮสผมไม่ใช่ของโฮสแปซิฟิก
ส่วนของโฮสแปซิฟิก คุณพิซซ่าแมนได้อธิบายไปแล้วว่าทำไมถึงเข้าไม่ได้ทั้งเวบไม่ว่าจะไอพีอะไร
ลองอ่านดูดีๆครับ
เขาไม่ได้บล็อค ip ครับ
ไม่ค่อยมีใครเขาบล็อค ip ครับ เพราะ ip มันเปลี่ยนกันได้
เขาบล็อคเว็บ เพราะมันเกินที่จำกัดไว้ จะได้ไม่ไปกระทบเว็บอื่น
ที่คุณใช้วิธีนี้กับเว็บอื่น แล้วยังเข้าได้ เพราะที่อื่นเขาอาจจะไม่ได้จำกัดไว้ เข้าได้เรื่อยๆ แต่โดยรวมช้าทั้งหมด (ช้าทั้ง server) เว็บอื่นๆ ก็กระทบด้วยครับ
เป็นผมผมก็ทำแบบคุณ pizzaman ครับ เพราะมันยุติธรรมกับทุกเว็บ ไม่ใช่มีเว็บใดเว็บหนึ่งทำงานหนัก จนกระทบเว็บอื่น
ลองคิดดูครับ ถ้าผมเป็นอีกเว็บที่อยู่บน server เดียวกับคุณ แล้วเจออาการช้าขึ้นมา ผมก็ต้องโทรไปถามบริษัทฯ ว่าเป็นเพราะอะไร server ไม่ดีหรือเปล่า และคำตอบที่ได้ก็คือ "มีอีกเว็บหนึ่ง เขาทำงานหนักครับ เว็บคุณเลยช้า"
อ้าว! เขาแย่ง traffic ผมไปเหรอ ทั้งๆ ที่จ่ายเท่ากัน เอ๊ะอย่างนี้ลดราคาให้ผมได้ไม๊ มันไม่ยุติธรรมกับผม ไม่งั้นผมย้ายออก ไม่งั้น …อีกสารพัด
อีกอย่างผมว่าคุณควรลอง upgrade บริการที่รองรับ traffic ได้มากกว่าบริการเดิมที่ใช้อยู่มากกว่า ลองคุยกับคุณ pizzaman ดูว่ามีบริการไหนที่รองรับได้มากขึ้นหรือเปล่า หรือจะ colo ไปเลยก็ได้ ไม่รบกวนชาวบ้านดีครับ
คุยกันเพื่อหาทางออก และเอาใจเขามาใส่ใจเราครับ
เยี่ยมครับคุณ tonado ผมขออนุญาต +1 ครับ
เท่าที่ผมรู้มาปกติเค้าคิดเป้น ip กันนะครับ เคือถ้า 1 ip มันมี concurrent เยอะๆ นั่นแสดงว่า ip นั้นไม่น่าใช่คนธรรมดา ดังนั้นบล๊อคได้เลย แล้วก็ไม่ได้บล๊อคตลอดนะครับ บล๊อคแค่ชั่วคราว
ไม่เคยเห็นใคร config โฮสอย่างที่คุณบอก เพราะถ้าเค้าทำกันอย่างที่คุณบอกนะครับ เว็บคุณทุนเว็นในเครื่องโดน DOS ได้ง่ายๆ
ง่ายมากๆ ให้เด็กขาสั้นม.ปลายก็ได้ แค่เขียน Shell Script ได้ก็ DOS เว็บได้ทั้ง server แล้ว อย่างนั้นจะดีเหรอครับ
ส่วนการที่ต้องบล๊อค ip เพราะมันจะทำให้ DOS ยากขึ้น เพราะถ้าจะ DOS ไอ้คนโจมตีมั้นต้องเปลี่ยน IP หรือไม่ก็ต้องปลอม IP เข้ามา
อ้อส่วนอาการช้า ไม่เป็นทั้ง Server นะครับ เพราะสามารถ limit CPU ได้ครับ ส่วน traffic ไม่เกี่ยวเลยครับเพราะ Stresstest มันจะเน้นที่จำนวน connection traffic แทบไม่กระดิก หรือกระดิกน้อยมาก (กราฟที่คุณ Pizza เอามาโชว์ไม่ใช่ Traffic นะครับ)
ผมอ่านดีแล้วครับ ที่ยกตัวอย่างไปเป็นการทำงานของโฮสผมไม่ใช่ของโฮสแปซิฟิก
ส่วนของโฮสแปซิฟิก คุณพิซซ่าแมนได้อธิบายไปแล้วว่าทำไมถึงเข้าไม่ได้ทั้งเวบไม่ว่าจะไอพีอะไร
ลองอ่านดูดีๆครับ
ครับผมอ่านแล้วเข้าใจ แต่ไม่เข้าใจว่าจะทำไมทำไม เหมือนอย่างที่บอกข้างบนอ่ะครับ ถ้าทำอย่างที่คุณ kke ตั้งไว้มันยังจะดูน่าจะดีกว่าซะอีก
////////////////////////////////
สรุปสั้นๆสำหรับคนขึ้เกียจอ่านนะครับ
คือผมอยากรู้ว่าถ้าคนเข้าเว็บผมเยอะๆ วันละ 6000 คนต่อวันเว็บมันจะรับไหวรึเปล่า
ก็เลยลองทดสอบด้วยโปรแกรม stresstest แทนที่จะได้คำตอบ กับพบปัญหาว่าเวลาคนเข้าเยอะๆจาก ip เดียวกันแล้ว
เว็บก็ล่มไปเลย แต่หยุดการทดสอบเว็บก็เข้าได้เป็นปกติ นั่นแสดงว่าถ้าคนเข้าเยอะๆ เว็บจะเปิดไม่ขึ้นถูกไหมครับ
แต่มันไม่ใช่อย่างที่เข้าใจ เพราะเอาโค้ดชุดเดียวกันไปเปิดบนโฮสอื่น ทั้งโฮสนอก และโฮสไทย ที่สำคัญสเปกโฮสอื่นที่ทดสอบ
เครื่อง server สเปคต่ำกว่า hostpacifig ซะด้วยซ้ำ แต่เมื่อรันโปรแกรมทดสอบ ก็ยังสามารถเข้าเว็บจาก ip อื่นๆ ได้
นั่นหมายความว่าโค้ดผมไม่มีปัญหาใช่ไหมครับ น่าจะเป็นที่โฮสใช่ไหมครับ แต่พอโทรไปแจ้งที่โฮส โฮสเค้าก็โยนกลับมาท่าเีดียว่าเป็น
ที่โค้ดไม่ดี
เรื่องทั้งหมดมันก็แค่นี้ ที่อยากจะบอกก็แค่ว่า
โค้ดเว็บผมๆ เขียนถูกต้องตามมาตรฐาน และก็ทดสอบแล้วว่าได้มาตรฐานเพราะทดสอบกับโฮสที่อื่นๆแล้วไม่มีปัญหา
มีปัญหากับ hostpacifig ที่เดียว นั่นหมายความว่าเป็นที่โฮสใช่ไหมครับ
นั่นคือทางโฮสก็ควรจะอธิบายให้ชัดเจนว่าทำไมถึงเป็นอย่างนี้ config server ของคุณกับโค้ดของผมมันมีปัญหาเข้ากันไม่ได้ตรงไหน
แล้วคุณแก้ได้ไหม ถ้าไม่ได้ผมแก้ได้ไหม
ไม่ใช่โยนว่าโค้ดห่วยท่าเดียว อย่างนี้ง่ายสิครับ บริการของคุณมันต่างอะไรกับโฮสถูกๆ อย่างนี้เอาคนไม่มีความรู้มา support ก็ได้ครับ
เพราะไม่ว่าลูกค้าเป็นอะไร server ของคุณก็ถูกอยู่แล้ว support ไม่ต้องทำอะไรเลย แค่ไล่ลูกค้าไปเปลี่ยนโค้ดอย่างเดียวพอ