การตรวจสอบประสิทธิภาพเป็นส่วนสำคัญในการรันแอปพลิเคชันที่ประสบความสำเร็จ หนึ่งในวิธีพื้นฐานที่สุดในการบอกประสิทธิภาพของบางสิ่ง คือการวัดระยะเวลาในแต่ละครั้งที่เกิดขึ้นและกลั่นกรองสถิติจากนั้น
ค่าเฉลี่ย
ค่าเฉลี่ยหรือค่าเฉลี่ยของการรวบรวมค่าต่างๆ เป็นจุดเริ่มต้นที่ดีในการดูว่าบางสิ่งมีพฤติกรรมดีหรือไม่ดีอย่างไร คำนวณโดยการรวมค่าทั้งหมดที่อยู่ระหว่างการพิจารณา แล้วหารด้วยจำนวนครั้งที่เกิดขึ้น
ใน Ruby นี่คือสิ่งที่การคำนวณเวลาตอบสนองเฉลี่ยจะมีลักษณะดังนี้:
หมายเหตุ :ในตัวอย่างนี้ เพื่อให้ผลลัพธ์ที่แม่นยำยิ่งขึ้นเมื่อทำการหาร เราจะแปลงค่าระยะเวลารวมเป็นแบบทศนิยม มิฉะนั้น Ruby จะปัดเศษลงเป็นจำนวนเต็มที่ใกล้ที่สุดโดยส่งคืน 09 แทน.
สถิติที่มีประโยชน์อีกประการหนึ่งคือค่ามัธยฐาน แม้ว่าจะฟังดูคล้ายกัน แต่ก็มีความแตกต่างระหว่างค่าเฉลี่ยและค่ามัธยฐานของชุดค่าต่างๆ
ค่ามัธยฐานคือค่าที่แยกครึ่งบนของชุดออกจากครึ่งล่างของชุด
สำหรับชุดข้อมูลที่มีค่าเป็นจำนวนคี่ คุณจะได้รับค่ามัธยฐานโดยการเรียงลำดับค่าก่อน จากนั้นเลือกตัวเลขตรงกลาง สำหรับเซตที่มีค่าจำนวนคู่ หลังจากเรียงลำดับแล้ว ค่ามัธยฐานจะเป็นค่าเฉลี่ยของตัวเลขตรงกลางสองตัว
สถิตินี้เป็นวิธีที่ดีในการดูว่าข้อมูลมีการบิดเบือนอย่างมากหรือมีส่วนหางยาว
ค่าเฉลี่ยสำหรับระยะเวลาข้างต้นคือ 16 เนื่องจากค่าผิดปกติเพียงครั้งเดียวที่ 2000ms ค่ามัธยฐานซึ่งมีค่าเพียง 24 แสดงว่ามีความเบ้
ด้วยการคำนวณทั้งค่าเฉลี่ยและมัธยฐานของชุดข้อมูล คุณจะทราบได้ว่ามีค่าผิดปกติขนาดใหญ่หรือหางยาว
ปัญหาค่าเฉลี่ย
แม้ว่าค่าเฉลี่ยและค่ามัธยฐานจะเป็นตัวบ่งชี้ประสิทธิภาพที่ดี แต่ก็ไม่ได้บอกเล่าเรื่องราวทั้งหมด หากคุณขอหน้าเว็บสิบครั้ง ค่าเฉลี่ยอาจต่ำมาก แต่คำขอหนึ่งรายการขึ้นไปอาจใช้เวลานานมากในการดำเนินการให้เสร็จสิ้น
รูปภาพด้านล่างแสดงเปอร์เซ็นไทล์ที่ 99 (สีน้ำเงิน) และ 90 (สีเขียว) และค่าเฉลี่ย (สีแดง) สำหรับการดำเนินการบางอย่างใน AppSignal จะเห็นว่าเส้นที่ 99 และ 90 ค่อนข้างไกลจากค่าเฉลี่ยและมีการปรับขึ้นบ้าง ซึ่งหมายความว่าแม้ว่าลูกค้าทั่วไปของคุณจะได้รับประสบการณ์ที่ดี แต่ก็มีผู้ใช้ที่ต้องรอนานกว่าเกือบสองเท่าในการแสดงผลหน้าเว็บ ตามหลักการแล้ว คุณคงอยากให้ค่าเหล่านี้อยู่ใกล้กันมากที่สุดเท่าที่จะเป็นไปได้ เพื่อสร้างประสบการณ์ที่สอดคล้องกันมากขึ้นสำหรับผู้ใช้ทุกคน

ตัวอย่างเช่น เมื่อกำหนดระยะเวลาต่อไปนี้โดยที่ลูกค้า 10 รายร้องขอหน้าเว็บที่มีระยะเวลาระหว่าง 100 มิลลิวินาทีถึง 1 วินาที
ซึ่งจะส่งผลให้มีค่าเฉลี่ยเพียง 39 ในขณะที่ผู้ใช้รายหนึ่งมีประสบการณ์ที่แย่มากในเรื่องเวลาตอบสนอง 1 วินาที เมื่อติดตามค่าเฉลี่ย จะง่ายกว่าที่จะคิดว่าเว็บไซต์ของคุณมีประสิทธิภาพที่ยอดเยี่ยม ในขณะที่ในความเป็นจริงแล้ว ผู้ใช้จะได้รับประสบการณ์ที่แย่มากเป็นครั้งคราว
ตัวอย่างข้างต้นมีไว้สำหรับคำขอ 10 รายการเท่านั้น แต่ลองจินตนาการว่าคุณมีคำขอนับพันคำขอต่อวัน นั่นหมายถึงผู้ใช้นับร้อยรายต้องมีประสบการณ์ที่แย่มาก
เปอร์เซ็นไทล์
เพื่อให้มีแนวคิดที่ดีขึ้นเกี่ยวกับการแจกแจงค่า เราใช้เปอร์เซ็นไทล์ เปอร์เซ็นต์ไทล์จะคล้ายกับค่ามัธยฐาน ซึ่งเป็นตัวเลขที่บ่งบอกถึงจุดในชุดข้อมูลโดยที่ครึ่งหนึ่งของชุดอยู่ต่ำกว่าตัวเลขและครึ่งหนึ่งอยู่สูงกว่า เปอร์เซ็นต์ไทล์จะคล้ายกันในแง่ที่ว่าเปอร์เซ็นไทล์ที่ 20 หมายความว่า 20% ของตัวเลขในชุดข้อมูลอยู่ต่ำกว่าตัวเลขนั้น
รับชุด (เรียงลำดับ) ต่อไปนี้:
หากเราต้องการทราบเปอร์เซ็นไทล์ที่ 20 เราสามารถคำนวณได้ดังนี้:ในชุดจะมีค่าอยู่ 10 ค่า ค่าที่ต้องการอยู่ที่ตำแหน่ง 1 (43 ) เนื่องจากอาร์เรย์ของเราเริ่มต้นที่ศูนย์ เนื่องจากอาร์เรย์นี้มีจำนวนรายการเท่ากัน เราจึงต้องคำนวณค่าเฉลี่ยระหว่างดัชนี (56 ) และดัชนี + 1 (68 ). ซึ่งจะส่งผลให้มีค่า 75 สำหรับเปอร์เซ็นไทล์ที่ 20
การใช้งาน Ruby ที่ไร้เดียงสามากจะมีลักษณะดังนี้:
88รหัส> นี้ ฟังก์ชั่นดูคล้ายกับ 95 ของเรามาก การคำนวณและในความเป็นจริง 106 เหมือนกับ 111 เปอร์เซ็นไทล์
AppSignal ใช้สถิติด้านบนเพื่อสร้างตัววัดประสิทธิภาพสำหรับแอปพลิเคชันของคุณ เราไม่เพียงแค่พึ่งพาธีม/ค่าเฉลี่ย แต่ยังคำนวณเปอร์เซ็นไทล์ที่ 90 และ 95 เพื่อแสดงค่าผิดปกติที่ช่วยให้เข้าใจการกระจายคำขอของคุณได้ดีขึ้น ค้นหาข้อมูลเพิ่มเติมได้ที่หน้าทัวร์ชมการแสดงของเรา
สิ่งแปลกประหลาด
เนื่องจากวิธีคำนวณเปอร์เซ็นไทล์และค่าเฉลี่ย บางครั้งจึงเป็นไปได้ที่จะทำให้เปอร์เซ็นไทล์ที่ 90 ลดลงต่ำกว่าค่าเฉลี่ย ตัวอย่างเช่น เมื่อพิจารณาจากชุดข้อมูลต่อไปนี้:
นี่จะให้ 129 แก่เรา จาก 138 และเปอร์เซ็นไทล์ที่ 90 เท่ากับ 147 .
หากระบบรวบรวมหน่วยเมตริกของคุณแสดงเฉพาะเปอร์เซ็นไทล์ที่ 90 และค่าเฉลี่ย คุณยังคงสามารถอนุมานได้ว่ามีค่าผิดปกติอย่างมากที่ใดที่หนึ่งในชุดข้อมูลของคุณ หากเปอร์เซ็นไทล์ที่ 90 ลดลงต่ำกว่าค่าเฉลี่ย
😏 หากคุณชอบบทความนี้ ยังมีอะไรอีกมากมายที่เราเขียนเกี่ยวกับประสิทธิภาพของ Ruby (บน Rails) โปรดดูรายการตรวจสอบการตรวจสอบประสิทธิภาพของ Ruby
คุณเกือบ 100% ของโพสต์นี้
แค่นั้นแหละ! ในโพสต์อื่น เราจะพูดถึงวิธีที่เราจัดเก็บและคำนวณเปอร์เซ็นไทล์สำหรับคำขอของลูกค้าทั้งหมดโดยใช้ Quantiles อย่างมีประสิทธิภาพ หากคุณมีคำถามหรือข้อสังเกตเกี่ยวกับสถิติและ APM การติดตามข้อผิดพลาดหรือการตรวจสอบประสิทธิภาพ โปรดติดต่อเราทาง Twitter @AppSignal หรือทางอีเมล
โรเบิร์ต บีคแมน
ในฐานะผู้ร่วมก่อตั้ง Robert ได้เขียนความมุ่งมั่นครั้งแรกของเรา เขายังเป็นแบบอย่างในการสนับสนุนของเราและรู้ทุกอย่างเกี่ยวกับรายละเอียดเล็กๆ น้อยๆ ในโค้ด การเดินทางและรูปถ่าย (พร้อมกัน)
บทความทั้งหมดโดย Robert Beekman