Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

วิธีที่ง่ายที่สุดในการตรวจสอบ Ruby:เครื่องมือวัดอัตโนมัติ

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

อย่างไรก็ตาม ด้วยบางสิ่งที่ตั้งไว้และ APM ที่รองรับ Ruby โดยกำเนิด การทำขั้นตอนนี้ง่ายกว่าที่เคย ในโพสต์นี้ เราจะแสดงให้คุณเห็นว่าคุณทำได้อย่างไรบ้าง

เครื่องมือวัดอัตโนมัติ - การตั้งค่า APM แฮนด์ฟรี

หากต้องการค้นหาว่าโค้ดส่วนใดที่ทำให้เกิดปัญหาด้านประสิทธิภาพ คุณจะต้องเพิ่มเครื่องมือในโค้ด ด้วยวิธีนี้ คุณจะแยกแยะการกระทำทั้งหมดและวัดว่าการกระทำใดช้าที่สุด

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

เอเจนต์การตรวจสอบของเราจะตรวจจับส่วนต่างๆ ของโครงสร้างพื้นฐานของคุณและใช้เครื่องมือโดยอัตโนมัติ ซึ่งช่วยให้แอป AppSignal สามารถแยกแยะ ประมวลผล ตรวจสอบ และแสดงกราฟและแดชบอร์ดที่คุณต้องการมากที่สุด

ซึ่งหมายความว่า ตัวอย่างเช่น สำหรับ graphql gem สำหรับ Ruby นั้น AppSignal จะใช้เครื่องมือทุกคำขอของ GraphQL ที่เข้ามา ซึ่งหมายความว่าจะให้รายละเอียดของเหตุการณ์ทั้งหมดในคำขอ

เครื่องมือวัดแบบสำเร็จรูป

เราได้จัดทำรายการเครื่องมือทั้งหมดที่ AppSignal รองรับ ค่อนข้างกว้างขวาง:

ประเภท เครื่องมือ
กรอบงาน ราง
คุณสมบัติของราง Action Mailer
คุณสมบัติของราง สายต่อ
คุณสมบัติของราง บันทึกการใช้งาน
คุณสมบัติของราง งานที่ใช้งานอยู่
คุณสมบัติของราง แคช
รองรับผ่าน ActiveRecord PostgreSQL, MySQL, SQLite และอื่นๆ
การรวม Heroku Heroku PostgreSQL
กรอบงาน ปาดริโน
กรอบงาน ซินาตรา
อัญมณี แร็ค
อัญมณี เว็บแมชชีน
เว็บเซิร์ฟเวอร์ พูม่า
เว็บเซิร์ฟเวอร์ ยูนิคอร์น
ORM DataMapper
ORM ภาคต่อ
ORM MongoDB
API องุ่น
API GraphQL
ไลบรารีมาตรฐาน เน็ต::HTTP
งานเบื้องหลัง คิว
งานเบื้องหลัง ไซด์คิก
งานเบื้องหลัง งานล่าช้า
งานเบื้องหลัง คำขอ
งานเบื้องหลัง โชริวเคน
อัญมณี คราด

อย่างที่ฉันพูดไป รายการค่อนข้างยาว ซึ่งเป็นเหตุผลที่เราจะไม่เจาะลึกเครื่องมือทุกอย่างในโพสต์นี้

เว็บเฟรมเวิร์กและ API

AppSignal รองรับการใช้เครื่องมือของคำขอเว็บใน Ruby on Rails, Padrino และ Sinatra ที่พร้อมใช้งานทันที รองรับ API ที่ใช้ Grape หรือ GraphQL ด้วยเช่นกัน

รูบี้ ออน เรลส์

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

แม้กระทั่งการติดตามว่าต้องใช้เวลานานแค่ไหนสำหรับคำขอ HTTP ที่จะมาถึงแอป Rails ผ่านตัวโหลดบาลานซ์ของเว็บเซิร์ฟเวอร์ หากไม่ได้เปิดไว้โดยค่าเริ่มต้น ให้ตั้งค่าส่วนหัวของการติดตามเวลาในคิวของคำขอ จากนั้น AppSignal จะสร้างกราฟเวลาในคิวโดยอัตโนมัติ

GraphQL

AppSignal รองรับ graphql gem สำหรับ Ruby มันจะใช้เครื่องมือทุกคำขอของ GraphQL ที่เข้ามาและให้รายละเอียดของเหตุการณ์ทั้งหมดในคำขอ คุณจะสามารถดูได้ว่าต้องใช้เวลานานแค่ไหนในการแยกวิเคราะห์ ตรวจสอบ และดำเนินการแก้ไขของคุณ กิจกรรมจากเว็บเฟรมเวิร์กของแอปและการเรียกใช้ฐานข้อมูลจะรวมอยู่ในรายละเอียดนี้ด้วย

วิธีนี้เหมาะสำหรับผู้ที่ต้องการดีบักการสืบค้น GraphQL ที่ดูเหมือนจะใช้เวลานาน และคุณไม่แน่ใจว่าการชะลอตัวจะเกิดขึ้นที่ใด อย่าลืมเกี่ยวกับสิ่งผิดปกติที่ทริกเกอร์ที่นี่ด้วย - สิ่งเหล่านี้มีประโยชน์มากสำหรับการแจ้งเตือนเมื่อเวลาการสืบค้นถึงเกณฑ์ที่กำหนด

ซินาตรา ปาดริโน และองุ่น

Sinatra, Padrino และ Grape เป็นเว็บและเฟรมเวิร์ก API สำหรับ Ruby ที่สามารถเป็นส่วนหนึ่งของแอปได้หลายวิธี เป็นแอปแบบสแตนด์อโลนหรือติดตั้งบนแอป Rails ที่ใหญ่กว่า ขึ้นอยู่กับวิธีการติดตั้งแอปบนเว็บเซิร์ฟเวอร์ ขั้นตอนการติดตั้งบางอย่างที่จำเป็นสำหรับ Sinatra, Padrino และ Grape

เมื่อติดตั้งคำขอ Sinatra, Padrino, Grape ทั้งหมดแล้ว จะมีการรายงานข้อผิดพลาดและการวัดประสิทธิภาพเมื่อปริมาณการใช้งานเข้าถึง API จุดสิ้นสุด (API) ทุกจุดเป็นการกระทำของตัวเองใน AppSignal เพื่อค้นหาจุดปลายที่พบข้อผิดพลาดได้ง่าย เช่นเดียวกับแอป Rails การแยกย่อยประสิทธิภาพจะให้ข้อมูลเชิงลึกว่าการสืบค้นฐานข้อมูลหรือส่วนอื่นใด หรือแอปนั้นช้ากว่าแอปอื่นๆ

ฐานข้อมูล

บันทึกที่ใช้งานอยู่และ ORM อื่นๆ

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

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

การผสานรวมจะแสดงให้คุณเห็นการติดตามการเรียกฐานข้อมูล คุณจึงสามารถดูว่าคำถามใดเป็นรากเหง้าของความชั่วร้าย (หรืออัจฉริยะ) ของคุณ 😉

ข้อความค้นหา N+1

กังวลว่าอาจมีข้อความค้นหา N+1 เกิดขึ้นในคำขอและนั่นคือสิ่งที่ทำให้ช้าลงหรือไม่ หากเราตรวจพบข้อความค้นหา N+1 คำเตือนจะปรากฏในไทม์ไลน์ของกิจกรรมสำหรับกิจกรรมที่ตรวจพบ

เรดิส

ด้วยการผสานการทำงานของ Redis คุณจะเห็นการโทรของคุณไปยัง Redis ปรากฏในไทม์ไลน์ของกิจกรรม:

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

นี่เป็นข่าวดีสำหรับผู้ที่ต้องการดีบักการโทรที่ใช้เวลานานไปยังแคช Redis คุณยังสามารถตั้งค่าทริกเกอร์ความผิดปกติเพื่อส่งการแจ้งเตือนตามคำขอที่ทำงานเป็นเวลานานมาก!

งานเบื้องหลัง

เมื่อใดก็ตามที่งานเบื้องหลังถูกจัดคิวด้วย Sidekiq, Delayed::Job, Resque, Shoryuken และ Que AppSignal จะรายงานข้อผิดพลาดและการวัดประสิทธิภาพโดยอัตโนมัติ นอกจากนี้ยังรองรับอะแดปเตอร์ Active Job ทั้งหมด และไลบรารีงานพื้นหลังบางรายการ เช่น Sidekiq และ Delayed::Job จะรายงานข้อมูลเมตาจากไลบรารีเองมากขึ้นอีก

การส่งอีเมลด้วย Action Mailer

หากตัวส่งจดหมาย Rails ที่ใช้ Action Mailer ถูกตั้งค่าเป็น deliver_later พวกเขาจะถูกกำหนดเส้นทางผ่าน Active Job และสามารถพึ่งพาเครื่องมือวัดระดับเดียวกันได้

เว็บซ็อกเก็ต

ใช้ Action Cable ในแอพ Rails ของคุณหรือไม่? AppSignal จะรายงานข้อผิดพลาดและการวัดประสิทธิภาพสำหรับข้อความและการสมัครรับข้อมูลโดยอัตโนมัติ ทุกข้อความถูกแยกจากกัน ดังนั้นแม้ช่องสัญญาณที่ใช้เวลานานก็จะรายงานกิจกรรมทั้งหมด โดยจะจัดกลุ่มตามการดำเนินการเพื่อให้เห็นภาพรวมที่ชัดเจนว่าการดำเนินการแต่ละรายการทำงานเป็นอย่างไร

👋 หากคุณชอบ โปรดอ่านบทความเกี่ยวกับประสิทธิภาพของ Ruby (on Rails) อื่นๆ ในรายการตรวจสอบการตรวจสอบประสิทธิภาพของ Ruby

ลองใช้ AppSignal:การตรวจสอบที่ง่ายและสะดวก 🍪

ตลอด 7 ปีที่ผ่านมา เราได้ช่วยนักพัฒนาซอฟต์แวร์หลายพันคนในการติดตั้งโค้ดของพวกเขาโดยอัตโนมัติ และเราอยากให้คุณลองใช้งานเราเช่นกัน โปรดติดต่อเรา เราจะจัดส่งสตรอปวาเฟลฟรีหนึ่งกล่องให้คุณด้วย

ป.ล. หากคุณกำลังช่วยโลกด้วยโครงการ OSS ที่ยอดเยี่ยม เราจะช่วยคุณด้วยบัญชี AppSignal ฟรี บอกต่อถึงผู้ดูแลที่คุณให้ความสำคัญ!