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

ตรวจสอบประสิทธิภาพแอป Ruby on Rails ของคุณอย่างมีประสิทธิภาพด้วย AppSignal

ในส่วนแรกของชุดบทความนี้ เราได้ปรับใช้แอปพลิเคชัน Ruby on Rails อย่างง่ายกับแพลตฟอร์มแอปของ DigitalOcean นอกจากนี้เรายังเชื่อมต่อแอป Rails เข้ากับ AppSignal เพื่อดูว่ามีการติดตามและแสดงข้อผิดพลาดง่ายๆ ในแดชบอร์ดข้อผิดพลาดของ AppSignal อย่างไร

ในส่วนนี้ของซีรีส์นี้ เราจะเจาะลึกถึงวิธีการตั้งค่าต่อไปนี้สำหรับแอปพลิเคชัน Ruby on Rails ของคุณโดยใช้ AppSignal:

  • การตรวจสอบประสิทธิภาพ
  • การตรวจสอบงานพื้นหลังของ Rails รวมถึงวิธีการตรวจสอบการเรียก API แบบง่าย
  • การบันทึก
  • การแจ้งเตือน

เข้าเรื่องเลย!

การตรวจสอบประสิทธิภาพของแอป Rails โดยใช้ AppSignal

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

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

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

การติดตามเวลาตอบสนอง

จากแดชบอร์ดเริ่มต้น AppSignal มีกราฟสองกราฟที่ให้ภาพรวมคร่าวๆ ว่าแอป Rails ของคุณทำงานช้า (หรือเร็ว) แค่ไหน:ปริมาณงาน และ เวลาตอบสนอง กราฟ

ตรวจสอบประสิทธิภาพแอป Ruby on Rails ของคุณอย่างมีประสิทธิภาพด้วย AppSignal

  • ปริมาณงาน - โดยพื้นฐานแล้วจะวัดจำนวนคำขอต่อวินาทีที่แอปของคุณกำลังประมวลผลอยู่ (อย่าสับสนกับจำนวนคำขอต่อวินาทีที่แอปของคุณสามารถจัดการโดยรวมได้) หลักการพื้นฐานคือ:ยิ่งมีคำขอต่อวินาทีมากเท่าไรก็ยิ่งดีเท่านั้น อย่างไรก็ตาม หากเซิร์ฟเวอร์แอปของคุณจัดการคำขอต่อวินาทีมากเกินไป อาจถึงเวลาที่ต้องปรับขนาดทรัพยากรเซิร์ฟเวอร์ของคุณเพื่อจัดการสิ่งนี้
  • เวลาตอบสนอง - เวลาเฉลี่ยที่เบราว์เซอร์ตอบสนองใช้ในหน่วยมิลลิวินาที ยิ่งใช้เวลาตอบสนองมากเท่าใด แอปของคุณก็จะยิ่งทำงานแย่ลงเท่านั้น หลักการทั่วไปคือ หากเว็บแอป Rails ของคุณมีเวลาตอบสนองต่ำกว่า 100 มิลลิวินาที คุณสามารถถือว่าเร็วได้ ในขณะที่เวลาตอบสนอง 300 มิลลิวินาทีขึ้นไปถือว่าช้า

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

ตรวจสอบประสิทธิภาพแอป Ruby on Rails ของคุณอย่างมีประสิทธิภาพด้วย AppSignal

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

ขณะอยู่ในมุมมองนี้ สิ่งสำคัญคือต้องตรวจสอบกลุ่มเหตุการณ์ กราฟซึ่งอยู่ใต้ เวลาตอบสนอง และ ปริมาณงาน กราฟ:

ตรวจสอบประสิทธิภาพแอป Ruby on Rails ของคุณอย่างมีประสิทธิภาพด้วย AppSignal

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

ตอนนี้เรามาเปลี่ยนเกียร์เพื่อติดตามการสืบค้นฐานข้อมูลโดยใช้ AppSignal

การติดตามการสืบค้นฐานข้อมูล

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

มาดูตัวอย่างของข้อความค้นหา N+1 ที่น่าอับอายกัน ในแอปตัวติดตามค่าใช้จ่ายที่แนะนำในส่วนที่ 1 วิธีการจัดทำดัชนีในตัวควบคุมค่าใช้จ่ายมีลักษณะดังนี้:

 

นี่อาจดูไร้เดียงสา แต่ถ้าคุณพิจารณาปัญหาแล้ว รายการในแดชบอร์ด AppSignal ของคุณ คุณจะเห็นสิ่งที่น่าสนใจ:

ตรวจสอบประสิทธิภาพแอป Ruby on Rails ของคุณอย่างมีประสิทธิภาพด้วย AppSignal

มีการเน้นข้อความค้นหา N+1 ในวิธีการจัดทำดัชนีของตัวควบคุมค่าใช้จ่าย

หากเราเจาะลึกเพิ่มเติมโดยการคลิกลิงก์ปัญหา เราจะไปที่รายละเอียดปัญหา หน้าจอดังนี้:

ตรวจสอบประสิทธิภาพแอป Ruby on Rails ของคุณอย่างมีประสิทธิภาพด้วย AppSignal

สังเกตว่า AppSignal เสนอคำอธิบายของปัญหาอย่างไร รวมถึงลิงก์ไปยังโพสต์บล็อกที่มีรายละเอียดเพิ่มเติมซึ่งแสดงวิธีจัดการกับปัญหา

มาดูกันว่า AppSignal ช่วยคุณทำงานเบื้องหลังได้อย่างไร

การติดตามงานพื้นหลังของ Rails ด้วย AppSignal

งานเบื้องหลังเป็นคุณสมบัติทั่วไปในแอปพลิเคชัน Ruby on Rails ที่ใช้งานจริงจำนวนมาก โดยมี Gem และไลบรารีการประมวลผลคิวงานที่หลากหลายให้คุณเลือก

AppSignal รองรับการติดตามและติดตามไลบรารีการประมวลผลงานเบื้องหลังต่างๆ รวมถึง Sidekiq, Que, Delayed Job, Resque และอื่นๆ

สมมติว่าเราต้องการคุณลักษณะที่ผู้ใช้ได้รับอัตราแลกเปลี่ยนสกุลเงินรายวันในแดชบอร์ด

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

อัญมณีการประมวลผลเบื้องหลังที่เราจะใช้ในแอปติดตามค่าใช้จ่ายคือ GoodJob แต่คุณสามารถใช้อะไรก็ได้ที่เหมาะกับคุณได้อย่างอิสระ

มาสร้างงานพื้นหลังเพื่อดึงอัตรา:

 

จากนั้นตั้งค่า GoodJob ให้รัน cron สำหรับงานนี้ทุกๆ สองสามนาที (หรือตามที่คุณต้องการ) AppSignal ตรวจจับการมีอยู่ของบริการพื้นหลังโดยอัตโนมัติ และรวมตัวกรองที่ดีเพื่อให้คุณสามารถแยกออกจากแดชบอร์ดเว็บเริ่มต้นได้:

ตรวจสอบประสิทธิภาพแอป Ruby on Rails ของคุณอย่างมีประสิทธิภาพด้วย AppSignal

โดยไม่ต้องใช้เครื่องมือล่วงหน้ามากนัก AppSignal จะตรวจจับการเรียก API และติดตามปัญหาต่างๆ:

ตรวจสอบประสิทธิภาพแอป Ruby on Rails ของคุณอย่างมีประสิทธิภาพด้วย AppSignal

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

การตรวจสอบสถานะการออนไลน์

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

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

การตั้งค่ามันเป็นเรื่องง่าย เริ่มต้นด้วยการคลิกที่ การตรวจสอบสถานะการออนไลน์ ลิงก์ในเมนูด้านซ้าย

จากนั้น เมื่อคุณคลิกที่ สร้างตัวตรวจสอบสถานะการออนไลน์ ปุ่ม คุณควรได้รับกล่องโต้ตอบคล้ายกับที่แสดงด้านล่าง:

ตรวจสอบประสิทธิภาพแอป Ruby on Rails ของคุณอย่างมีประสิทธิภาพด้วย AppSignal

ตรวจสอบประสิทธิภาพแอป Ruby on Rails ของคุณอย่างมีประสิทธิภาพด้วย AppSignal

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

  • ชื่อ - ตั้งชื่อที่เหมาะสมให้กับมอนิเตอร์สถานะการออนไลน์ของคุณ
  • URL - ระบุ URL แบบเต็มไปยังเส้นทางสถานะการออนไลน์ เริ่มต้นด้วย Rails 7.1 เส้นทางสถานะการออนไลน์เริ่มต้นคือ https://your-app-domain/up .
  • ภูมิภาค - เลือกภูมิภาคที่คุณต้องการตรวจสอบสถานะการออนไลน์
  • การแจ้งเตือน - เลือกช่องทางการแจ้งเตือนเพื่อรับการแจ้งเตือน

เมื่อเสร็จแล้ว ดำเนินการต่อและสร้างจอภาพได้เลย!

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

ก่อนที่จะไปยังวิธีที่ AppSignal สามารถช่วยในเรื่องการบันทึก มีคุณลักษณะที่สำคัญอีกประการหนึ่งในการทำให้เลเยอร์การตรวจสอบสถานะการออนไลน์สมบูรณ์:หน้าสถานะสาธารณะฟรี

คลิกที่ การสร้างสถานะสาธารณะ ลิงค์หน้าดังที่แสดงด้านล่าง:

ตรวจสอบประสิทธิภาพแอป Ruby on Rails ของคุณอย่างมีประสิทธิภาพด้วย AppSignal

จากนั้นคลิกที่ หน้าสถานะใหม่ ปุ่ม นำคุณไปสู่สิ่งนี้:

ตรวจสอบประสิทธิภาพแอป Ruby on Rails ของคุณอย่างมีประสิทธิภาพด้วย AppSignal

ตรวจสอบประสิทธิภาพแอป Ruby on Rails ของคุณอย่างมีประสิทธิภาพด้วย AppSignal

กรอกข้อมูลที่จำเป็นทั้งหมดได้เลย โปรดทราบว่าหากคุณใช้โดเมนที่กำหนดเอง คุณจะต้องเพิ่มคำสั่ง CNAME ที่ชี้ไปที่ cname.appsignal-status.com ในการตั้งค่า DNS ของโดเมนที่คุณกำหนดเอง

การบันทึกด้วย AppSignal

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

หากต้องการเริ่มต้นการบันทึก ตรวจสอบให้แน่ใจว่าคุณใช้งาน AppSignal gem เวอร์ชันล่าสุด หากคุณมี gem เวอร์ชันเก่า ให้อัปเดตด้วย:

 

จากนั้นสร้างเครื่องมือเริ่มต้นใหม่และแก้ไขดังนี้:

 

ตอนนี้คุณสามารถเข้าถึงบันทึกของแอปของคุณได้ดังนี้:

ตรวจสอบประสิทธิภาพแอป Ruby on Rails ของคุณอย่างมีประสิทธิภาพด้วย AppSignal

โปรดสังเกตว่าคุณยังได้รับตัวกรองที่ดีในการกรองบันทึกบันทึกตามความรุนแรง รวมถึงการเข้าถึงบันทึกที่ใช้งานอยู่

คุณสามารถอ่านบันทึกของ AppSignal สำหรับเอกสาร Ruby ได้ที่นี่

คุณสมบัติเด่นอื่นๆ

มีคุณลักษณะเด่นอื่นๆ สองสามประการที่คุณสามารถใช้ได้ใน AppSignal:การตรวจจับความผิดปกติและตัววัดแบบกำหนดเอง

การตรวจจับความผิดปกติ

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

ไปที่การตรวจจับความผิดปกติ เชื่อมโยงและสร้างทริกเกอร์ใหม่ จากนั้นกำหนดค่า:

ตรวจสอบประสิทธิภาพแอป Ruby on Rails ของคุณอย่างมีประสิทธิภาพด้วย AppSignal

  • เมตริก - ในกรณีของฉัน ฉันสนใจในการใช้หน่วยความจำ แต่คุณสามารถเลือกเมตริกอื่นๆ ที่เหมาะกับกรณีการใช้งานของคุณได้
  • รายละเอียดทริกเกอร์ - ที่นี่ คุณจะกำหนดค่ารายละเอียดที่เกี่ยวข้องกับทริกเกอร์ของคุณ ในกรณีของฉัน ทริกเกอร์จะเริ่มทำงานหากหน่วยความจำโฮสต์มีขนาดต่ำกว่า 200MB

ตัวชี้วัดที่กำหนดเอง

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

สรุป

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

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

AppSignal มีอะไรอีกมากมายเกินกว่าที่จะครอบคลุมได้ในบทความชุดนี้ ฉันขอแนะนำให้คุณลองใช้แอป Rails ของคุณ

ขอให้สนุกกับการเขียนโค้ด!

ปล. หากคุณต้องการอ่านโพสต์ Ruby Magic ทันทีที่เผยแพร่ สมัครรับจดหมายข่าว Ruby Magic ของเราและไม่พลาดแม้แต่โพสต์เดียว!