Apache Benchmark + GNUPlot: วัดและสร้างกราฟประสิทธิภาพของเว็บเซิร์ฟเวอร์ของคุณ

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

การจัดการบริการเซิร์ฟเวอร์การจัดการ e1368625038693

เกณฑ์มาตรฐาน Apache + GNUPlot

คราวนี้เราจะใช้เครื่องมือที่เรียกว่า มาตรฐาน Apacheซึ่งแม้ว่าจะมีชื่อ 'apache' แต่ไม่ได้ใช้สำหรับการวัดประสิทธิภาพของ Apache เท่านั้น แต่ยังสามารถใช้กับ Nginx และอื่น ๆ ได้อีกด้วย ที่จริงฉันจะใช้เพื่อวัดประสิทธิภาพของ Nginx.

นอกจากนี้เรายังจะใช้ GNUPแปลงซึ่งจะช่วยให้เราสร้างกราฟแบบนี้ได้ด้วยเส้นไม่กี่บรรทัด:

ผล

การติดตั้ง Apache Benchmark และ GNUPlot

Apache Benchmark เป็นเครื่องมือที่เราสามารถใช้ได้หลังจากติดตั้งแพ็คเกจ Apache แล้ว GNUPlot จะพร้อมใช้งานหลังจากติดตั้งแพ็คเกจที่มีชื่อเดียวกัน ถ้าอย่างนั้น ...

บน distros เช่น Debian, Ubuntu หรือที่คล้ายกัน:

sudo apt-get install apache2 gnuplot

ใน distros เช่น ArchLinux หรืออนุพันธ์:

sudo pacman -S apache gnuplot

เราจำเป็นต้องติดตั้งแพ็คเกจ Apache เท่านั้นเราไม่จำเป็นต้องเริ่มหรือกำหนดค่าอะไรอีกเพียงแค่ติดตั้งก็เพียงพอแล้ว

ใช้ Apache Benchmark

สิ่งที่เราจะทำคือส่งคำขอจำนวนเฉพาะ (100) ในกลุ่มหลาย ๆ (จาก 20 ถึง 20) ไปยังไซต์เฉพาะ เราจะบันทึกผลลัพธ์ในไฟล์. csv (result.csv) จากนั้นประมวลผลด้วย GNUPloit บรรทัดจะเป็น:

ab -g resultados.csv -n 100 -c 20 http://nuestro-sitio-web.com/

เป็นสิ่งสำคัญมากที่จะต้องใส่ URL สุดท้าย / ใน URL ของไซต์ที่จะวัด

นี่คือผลลัพธ์หรือบันทึกที่แสดงให้ฉันเห็นเมื่อฉันทดสอบไซต์บนเครือข่ายของฉัน:

นี่คือ ApacheBench เวอร์ชัน 2.3 <$ Revision: 1638069 $> ลิขสิทธิ์ 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ ได้รับอนุญาตจาก Apache Software Foundation, http://www.apache.org/ Benchmarking gutl.jovenclub.cu (อดใจรอ) ..... เสร็จแล้ว

ซอฟต์แวร์เซิร์ฟเวอร์: เซิร์ฟเวอร์ nginx ชื่อโฮสต์: gutl.jovenclub.cu เซิร์ฟเวอร์พอร์ต: 80

เส้นทางเอกสาร: /
ความยาวเอกสาร: 206 ไบต์ระดับการทำงานพร้อมกัน: 20 เวลาที่ใช้สำหรับการทดสอบ: 0.101 วินาทีคำขอที่สมบูรณ์: 100 คำขอที่ล้มเหลว: 27 (เชื่อมต่อ: 0, รับ: 0, ความยาว: 27, ข้อยกเว้น: 0) คำตอบที่ไม่ใช่ 2xx: 73 ทั้งหมดที่โอน: 1310933 ไบต์ HTML ที่ถ่ายโอน: 1288952 ไบต์
คำขอต่อวินาที: 993.24 [# / วินาที] (ค่าเฉลี่ย)
เวลาต่อคำขอ: 20.136 [ms] (ค่าเฉลี่ย) เวลาต่อคำขอ: 1.007 [ms] (ค่าเฉลี่ยสำหรับคำขอที่เกิดขึ้นพร้อมกันทั้งหมด) อัตราการถ่ายโอน: 12715.49 [Kbytes / วินาที] ได้รับ Connection Times (ms) min mean [+/- sd] ค่ามัธยฐานสูงสุด Connect: 0 1 0.2 1 1 การประมวลผล: 1 17 24.8 4 86 กำลังรอ: 1 15 21.5 4 76 ทั้งหมด: 1 18 24.8 5 87 เปอร์เซ็นต์ของคำขอที่ให้บริการภายในระยะเวลาหนึ่ง (มิลลิวินาที) 50% 5 66% 6 75% 22 80% 41 90% 62 95% 80 98% 87 99% 87
100% 87 (คำขอที่ยาวที่สุด)

ฉันได้ทำเครื่องหมายเป็นสีแดงสิ่งที่ฉันคิดว่าเป็นสิ่งสำคัญที่สุดซึ่งมีมากหรือน้อย:

  1. ข้อมูลของเซิร์ฟเวอร์ที่เรากำลังทดสอบรวมถึง URL ที่เป็นปัญหา
  2. จำนวนคำขอต่อวินาที
  3. เซิร์ฟเวอร์ใช้เวลากี่มิลลิวินาทีในการเข้าร่วมคำขอที่ใช้เวลานานที่สุดนั่นคือคำขอที่ใช้เวลาตอบนานที่สุด

ด้วยข้อมูลนี้พวกเขาสามารถทราบได้ว่าเซิร์ฟเวอร์จะใช้เวลานานเท่าใดในการเข้าร่วมคำขอจำนวนนั้นจากนั้นพวกเขาสามารถเพิ่มระบบแคชที่ดีขึ้นปิดใช้งานโมดูลที่พวกเขาไม่ได้ใช้ ฯลฯ ฯลฯ เรียกใช้การทดสอบอีกครั้งและ ดูว่าประสิทธิภาพดีขึ้นหรือไม่

ฉันขอแนะนำให้ทำการทดสอบ 2 หรือ 3 ครั้งเพื่อให้คุณสร้างบางอย่างเช่นระยะขอบเนื่องจากไม่ค่อยผลลัพธ์ของการทดสอบสองครั้งในแถวจะเหมือนกัน

ตัวเลือกหรือพารามิเตอร์ Apache Benchmark ที่มีประโยชน์อื่น ๆ :

-k -H 'ยอมรับการเข้ารหัส: gzip, deflate' : ด้วย ab นี้จะยอมรับแคชและการบีบอัดที่เซิร์ฟเวอร์กำหนดค่าไว้ดังนั้นเวลาจะลดลง

-f urls.txt : ดังนั้นแทนที่จะทดสอบดัชนีของเว็บไซต์ แต่จะทำการทดสอบ URL ที่เราระบุในไฟล์นั้น

อย่างไรก็ตาม ... ลองดูที่ ผู้ชาย ab ให้คุณได้เห็น

แสดงผลลัพธ์ในกราฟ:

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

ในโฟลเดอร์เดียวกับที่เรามีไฟล์ results.csv (จำไว้ว่าเราเพิ่งสร้างขึ้นด้วยคำสั่งด้านบน) เราจะสร้างไฟล์ชื่อ gnuplot.p:

nano plot.p

ในนั้นเราจะใส่สิ่งต่อไปนี้:

set terminal png ขนาด 600 set output "results.png"ตั้งชื่อเรื่อง"100 คำขอ 20 คำขอที่เกิดขึ้นพร้อมกัน "set size ratio 0.6 set grid and set xlabel"คำขอ"ตั้งค่า ylabel"เวลาตอบสนอง (มิลลิวินาที)"พล็อต"results.csv"ใช้ 9 sbezier เรียบกับชื่อบรรทัด"Gutl.jovenclub.cu"

ฉันได้ทำเครื่องหมายเป็นสีแดงสิ่งที่คุณควรตรวจสอบอยู่เสมอ นั่นคือและจากบนลงล่าง:

  1. ชื่อไฟล์ภาพที่จะสร้าง
  2. จำนวนคำขอทั้งหมดและพร้อมกัน
  3. ชื่อไฟล์ที่เราเพิ่งสร้าง
  4. โดเมนที่เราทำงาน

เมื่อเราใส่เข้าไปแล้วให้บันทึกและออก (Ctrl + O แล้ว Ctrl + X) เราจะดำเนินการดังต่อไปนี้:

gnuplot plot.p

และ voila ที่จะสร้างกราฟด้วยชื่อที่ต้องการของฉันคือ:

ผลลัพธ์ 2

ตอนจบ!

Apache Benchmark มีตัวเลือกมากมายนอกจากนี้ยังมีชุดค่าผสมมากมายที่เราสามารถใช้เพื่อให้การทดสอบประสิทธิภาพของเราสมบูรณ์ยิ่งขึ้น

แต่เดี๋ยวก่อนนี่เป็นพื้นฐาน😉

สนุก!


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา

  1.   ฟรานซิส dijo

    เกณฑ์มาตรฐาน apache ที่น่าสนใจ gnuplot ไม่ทราบว่าสามารถปรับเปลี่ยนรูปแบบของเอาต์พุตได้หรือไม่? ฉันพูดสำหรับรายงานอย่างเป็นทางการ

    คำทักทายจากชิลี

    1.    KZKG ^ กาอาระ dijo

      ใช่มีการกำหนดค่ามากมายบนเน็ตสำหรับ gnuplot ค้นหาโดย Google เพื่อดูว่าคุณพบว่ามีความจริงจังหรือเป็นมืออาชีพเพียงพอที่จะใช้หรือไม่เพราะนั่นเป็นรสนิยมของทุกคน🙂

  2.   Wolf119 dijo

    อืมฉันจะทดสอบในขณะนี้บนเซิร์ฟเวอร์ apache เสมือนที่ฉันใช้งานอยู่เพื่อดูว่าสิ่งนี้ดำเนินไปอย่างไรเกี่ยวกับ GUTL เนื่องจากมันเริ่มทำงานอย่างรวดเร็วจาก 80 คำขอใช่ไหมมาดูกันว่า 100 ms ไม่เป็นเช่นนั้น ไม่มีอะไรเลยนอกจากจำนวนคำขออีก 10 คำขอเมื่อเทียบกับ 70 ถึง 80 และ 80 ถึง 90 ดึงดูดความสนใจของฉัน

    1.    KZKG ^ กาอาระ dijo

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

  3.   ชาร์ลี - บราวน์ dijo

    น่าสนใจมากโดยเฉพาะการใช้งาน GNUPlot จากสิ่งที่เห็นสามารถใช้สร้างกราฟจากชุดข้อมูลได้เกือบทุกชุดใช่ไหม ...

    1.    KZKG ^ กาอาระ dijo

      ใช่แน่นอนคุณส่งข้อมูลในไฟล์ที่คั่นด้วยเครื่องหมายจุลภาคหรืออะไรทำนองนั้นคุณบอกวิธีการประมวลผลในไฟล์กำหนดค่าและ voila

  4.   ดอลโฟ dijo

    สวัสดีฉันใช้เวลาอ่านบล็อกนี้มาโดยตลอด แต่ไม่เคยแสดงความคิดเห็นเกี่ยวกับบทความใด ๆ และดูเหมือนว่าจะเป็นโอกาสที่ดี
    สิ่งที่ฉันต้องการแบ่งปันกับคุณคือกราฟประเภทนี้สามารถตีความผิดได้เนื่องจาก Apache Bench จัดเรียงผลลัพธ์โดยใช้ ttime (เวลารวม) แทนเวลาตามลำดับ แม้ว่าข้อมูลจะยังคงเป็นจริง แต่กราฟอาจไม่แสดงสิ่งที่เราต้องการ
    นี่คือลิงค์ที่ฉันอ่าน
    http://www.bradlanders.com/2013/04/15/apache-bench-and-gnuplot-youre-probably-doing-it-wrong/

    อาศิรพจน์

  5.   ฮิวโก้ dijo

    Apache Benchmark ไม่ใช่เครื่องมือที่ดีที่สุดในการวัดประสิทธิภาพของเซิร์ฟเวอร์ HTTP บนคอมพิวเตอร์ที่มีหลายคอร์นอกจากนี้คำขอเพียง 100 คำขอที่มีการเชื่อมต่อพร้อมกัน 20 รายการเป็นการทดสอบที่อ่อนแอมากสิ่งที่เป็นจริงมากกว่าคือคำขอ 1,000 หรือ 10,000 คำขอพร้อมการเชื่อมต่อพร้อมกัน 100 รายการ ( เป็นที่ทราบกันดีว่า Nginx เป็นหนึ่งในแอปพลิเคชันที่สามารถให้บริการได้มากกว่า 10,000 คำขอต่อวินาที) และด้วยเหตุนี้จึงควรใช้เครื่องมือเช่น weighttp ซึ่งออกแบบมาสำหรับคอมพิวเตอร์แบบมัลติคอร์และใช้ epoll ซึ่งเร็วกว่าซึ่งแตกต่างจาก Apache Bench ซึ่งใช้เธรดเดียวและกลไกการจัดการเหตุการณ์ที่มีประสิทธิภาพน้อยกว่า

    เพื่อไปยังจุดของฉันสมมติว่าเซิร์ฟเวอร์มีเพียง 4 คอร์:

    weighttp -n 10000 -c 100 -t 4 -k "http://our-web-site.com/"

  6.   ความเชื่อ dijo

    สวัสดีทุก
    เมื่อวาดกราฟ (จาก CSV) ด้วย gnuplot มันทำให้ฉันมีข้อผิดพลาดดังต่อไปนี้คุณช่วยบอกวิธีแก้ได้ไหม

    "Plot.p" บรรทัดที่ 8: คำเตือน: การข้ามไฟล์ข้อมูลโดยไม่มีจุดที่ถูกต้อง

    พล็อต« graph.csv »โดยใช้ 9 sbezier ที่ราบรื่นพร้อมชื่อบรรทัด« AB - localhost / เว็บ»
    ^
    "Plot.p" บรรทัดที่ 8: ช่วง x ไม่ถูกต้อง

    ด้วย gnuplot ฉันสามารถสร้างเพจ HTML ได้หรือไม่