ไม่สำคัญว่าจะใช้ Nginx, อาปาเช่, Lighttpd หรืออื่น ๆ ผู้ดูแลระบบเครือข่ายใด ๆ ที่มีเว็บเซิร์ฟเวอร์จะต้องการทราบว่าเว็บเซิร์ฟเวอร์ตอบสนองต่อแบบสอบถามจำนวนหนึ่งได้เร็วเพียงใด
เกณฑ์มาตรฐาน 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 Benchmark
สิ่งที่เราจะทำคือส่งคำขอจำนวนเฉพาะ (100) ในกลุ่มหลาย ๆ (จาก 20 ถึง 20) ไปยังไซต์เฉพาะ เราจะบันทึกผลลัพธ์ในไฟล์. csv (result.csv) จากนั้นประมวลผลด้วย GNUPloit บรรทัดจะเป็น:
ab -g resultados.csv -n 100 -c 20 http://nuestro-sitio-web.com/
นี่คือผลลัพธ์หรือบันทึกที่แสดงให้ฉันเห็นเมื่อฉันทดสอบไซต์บนเครือข่ายของฉัน:
นี่คือ 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 (คำขอที่ยาวที่สุด)
ฉันได้ทำเครื่องหมายเป็นสีแดงสิ่งที่ฉันคิดว่าเป็นสิ่งสำคัญที่สุดซึ่งมีมากหรือน้อย:
- ข้อมูลของเซิร์ฟเวอร์ที่เรากำลังทดสอบรวมถึง URL ที่เป็นปัญหา
- จำนวนคำขอต่อวินาที
- เซิร์ฟเวอร์ใช้เวลากี่มิลลิวินาทีในการเข้าร่วมคำขอที่ใช้เวลานานที่สุดนั่นคือคำขอที่ใช้เวลาตอบนานที่สุด
ด้วยข้อมูลนี้พวกเขาสามารถทราบได้ว่าเซิร์ฟเวอร์จะใช้เวลานานเท่าใดในการเข้าร่วมคำขอจำนวนนั้นจากนั้นพวกเขาสามารถเพิ่มระบบแคชที่ดีขึ้นปิดใช้งานโมดูลที่พวกเขาไม่ได้ใช้ ฯลฯ ฯลฯ เรียกใช้การทดสอบอีกครั้งและ ดูว่าประสิทธิภาพดีขึ้นหรือไม่
ตัวเลือกหรือพารามิเตอร์ 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"
ฉันได้ทำเครื่องหมายเป็นสีแดงสิ่งที่คุณควรตรวจสอบอยู่เสมอ นั่นคือและจากบนลงล่าง:
- ชื่อไฟล์ภาพที่จะสร้าง
- จำนวนคำขอทั้งหมดและพร้อมกัน
- ชื่อไฟล์ที่เราเพิ่งสร้าง
- โดเมนที่เราทำงาน
เมื่อเราใส่เข้าไปแล้วให้บันทึกและออก (Ctrl + O แล้ว Ctrl + X) เราจะดำเนินการดังต่อไปนี้:
gnuplot plot.p
และ voila ที่จะสร้างกราฟด้วยชื่อที่ต้องการของฉันคือ:
Apache Benchmark มีตัวเลือกมากมายนอกจากนี้ยังมีชุดค่าผสมมากมายที่เราสามารถใช้เพื่อให้การทดสอบประสิทธิภาพของเราสมบูรณ์ยิ่งขึ้น
แต่เดี๋ยวก่อนนี่เป็นพื้นฐาน😉
สนุก!
เกณฑ์มาตรฐาน apache ที่น่าสนใจ gnuplot ไม่ทราบว่าสามารถปรับเปลี่ยนรูปแบบของเอาต์พุตได้หรือไม่? ฉันพูดสำหรับรายงานอย่างเป็นทางการ
คำทักทายจากชิลี
ใช่มีการกำหนดค่ามากมายบนเน็ตสำหรับ gnuplot ค้นหาโดย Google เพื่อดูว่าคุณพบว่ามีความจริงจังหรือเป็นมืออาชีพเพียงพอที่จะใช้หรือไม่เพราะนั่นเป็นรสนิยมของทุกคน🙂
อืมฉันจะทดสอบในขณะนี้บนเซิร์ฟเวอร์ apache เสมือนที่ฉันใช้งานอยู่เพื่อดูว่าสิ่งนี้ดำเนินไปอย่างไรเกี่ยวกับ GUTL เนื่องจากมันเริ่มทำงานอย่างรวดเร็วจาก 80 คำขอใช่ไหมมาดูกันว่า 100 ms ไม่เป็นเช่นนั้น ไม่มีอะไรเลยนอกจากจำนวนคำขออีก 10 คำขอเมื่อเทียบกับ 70 ถึง 80 และ 80 ถึง 90 ดึงดูดความสนใจของฉัน
ต้องเป็นเพราะคิวหรือจำนวนเธรดสูงสุดที่จะเข้าร่วมพร้อมกัน อย่างไรก็ตามฉันทำการทดสอบโดยไม่มี gzip โดยไม่มีการยุบตัวโดยไม่มีแคชหรืออะไรเลย😉
น่าสนใจมากโดยเฉพาะการใช้งาน GNUPlot จากสิ่งที่เห็นสามารถใช้สร้างกราฟจากชุดข้อมูลได้เกือบทุกชุดใช่ไหม ...
ใช่แน่นอนคุณส่งข้อมูลในไฟล์ที่คั่นด้วยเครื่องหมายจุลภาคหรืออะไรทำนองนั้นคุณบอกวิธีการประมวลผลในไฟล์กำหนดค่าและ voila
สวัสดีฉันใช้เวลาอ่านบล็อกนี้มาโดยตลอด แต่ไม่เคยแสดงความคิดเห็นเกี่ยวกับบทความใด ๆ และดูเหมือนว่าจะเป็นโอกาสที่ดี
สิ่งที่ฉันต้องการแบ่งปันกับคุณคือกราฟประเภทนี้สามารถตีความผิดได้เนื่องจาก Apache Bench จัดเรียงผลลัพธ์โดยใช้ ttime (เวลารวม) แทนเวลาตามลำดับ แม้ว่าข้อมูลจะยังคงเป็นจริง แต่กราฟอาจไม่แสดงสิ่งที่เราต้องการ
นี่คือลิงค์ที่ฉันอ่าน
http://www.bradlanders.com/2013/04/15/apache-bench-and-gnuplot-youre-probably-doing-it-wrong/
อาศิรพจน์
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/"
สวัสดีทุก
เมื่อวาดกราฟ (จาก CSV) ด้วย gnuplot มันทำให้ฉันมีข้อผิดพลาดดังต่อไปนี้คุณช่วยบอกวิธีแก้ได้ไหม
"Plot.p" บรรทัดที่ 8: คำเตือน: การข้ามไฟล์ข้อมูลโดยไม่มีจุดที่ถูกต้อง
พล็อต« graph.csv »โดยใช้ 9 sbezier ที่ราบรื่นพร้อมชื่อบรรทัด« AB - localhost / เว็บ»
^
"Plot.p" บรรทัดที่ 8: ช่วง x ไม่ถูกต้อง
ด้วย gnuplot ฉันสามารถสร้างเพจ HTML ได้หรือไม่