Sentry 如何提升 Laravel 应用性能
发布日期 作者 Eric L. Barnes
Sentry 是一个流行的错误和 应用程序性能监控 平台,可以轻松集成到 Laravel 应用中,帮助您快速识别和修复性能问题。使用 Sentry,您可以捕获应用中发生的错误、崩溃和性能问题,并收到提醒以采取立即措施。
在本篇文章中,我们将介绍如何在 Laravel 应用中安装和设置 Sentry,以及如何探索 Sentry 的一些有价值的特性,这些特性有助于提高应用性能。
如何在 Laravel 应用中安装和设置 Sentry
使用 Sentry 入门只需 5 行代码 - 无需代理。Sentry 的自动检测功能会捕获事务和跨度,让您更容易追踪应用中发生的所有问题的根本原因。
要开始监控您的 Laravel 应用,请使用 Composer 安装 sentry/sentry-laravel
包
composer `require sentry/sentry-laravel
然后,在 App/Exceptions/Handler.php
中添加 Sentry 报告
public function register(): void{ $this->reportable(function (Throwable $e) { \Sentry\Laravel\Integration::captureUnhandledException($e); });}
最后,运行此 Artisan 命令来配置 Sentry DSN
php artisan sentry:publish --dsn=<paste-your-DSN-here>
查看文档 以获取最新说明。现在,为了激活 Sentry 的性能监控,您需要通过以下方法之一配置事务的采样率:
- 使用 SDK 配置中的
traces_sample_rate
选项为所有事务设置统一的采样率,取值范围为 0 到 1 之间的数字。(例如,要发送 20% 的事务,将traces_sample_rate
设置为 0.2。) - 通过为
traces_sampler
配置选项提供一个函数,根据事务本身和捕获事务的上下文来控制采样率。
这两个选项是相互排斥的。如果您同时设置这两个选项,traces_sampler
将优先生效。
// Specify a fixed sample rate:'traces_sample_rate' => 0.2,// Or provide a custom sampler:'traces_sampler' => function (\Sentry\Tracing\SamplingContext $context): float { // return a number between 0 and 1},
在测试期间,将 traces_sample_rate
设置为 1.0,因为这样可以确保每个事务都会直接发送到 Sentry。
测试完成后,建议您在生产环境中降低此值,可以通过降低 traces_sample_rate
值,或切换到使用 traces_sampler
动态采样和过滤事务来实现。
就这样!请查看此 文档 以获取更多有关如何提高 PHP 应用响应时间的技巧。
使用 Sentry 检测性能问题
如果任其发展,性能问题可能会愈演愈烈,最终演变成严重的错误。在 Sentry 中,您只需几步即可采取行动(在为时已晚之前) - 您可以直接从您的问题提要中对 性能问题 进行分类、分配和解决。
Sentry 会向您发送有关应用中延迟问题的提醒,您可以直接修复这些问题 - 无需破译仪表板或研究跨度树。
Sentry 检测到许多 后端性能问题,例如 N+1 数据库查询、连续数据库查询和慢速数据库查询。使用 Sentry,您可以
- 通过电子邮件或您最喜欢的协作工具(如 Slack、Pagerduty 或 Jira)收到有关性能问题的通知。
- 在浓缩的跨度树中查看最相关的跨度,以更快速地找到代码中的根本原因(类似于错误问题的堆栈跟踪。您还可以展开跨度瀑布图,以查看更多问题证据。
- 直接在问题提要中对问题进行分类、分配和解决。
无需手动监控事务随时间的变化,您可以让 Sentry 准确告诉您代码中的问题所在,以便您快速采取行动。
了解您的整体应用健康状况
除了提醒用户有关特定性能问题之外,Sentry 还提供了有关缓慢事务、数据库查询和 HTTP 请求的详细信息,这些信息都包含在 事务摘要 中。这为您提供了关于您所关心性能指标的高级概览 - 无论是事务的 p95 持续时间还是失败率。
您还可以通过 可疑跨度 来减少故障排除和手动搜索日志的工作量,这使得更容易找到对用户影响最大的慢速请求。
为了全面了解您的应用健康状况,您还可以创建自定义仪表板,以便围绕您的团队认为对业务至关重要的性能 KPI 达成一致,并查看任何 趋势,这些趋势表明您应用的性能随着时间的推移发生了重大变化。
使用 Sentry 监控 Laravel 应用的好处
连接后端和前端问题
Sentry 的 分布式追踪 功能允许后端和前端问题之间的无缝连接,使开发人员能够有效地监控和诊断应用中的问题。
您可以追踪缓慢加载的页面,一直回到性能不佳的 API 调用 - 并显示任何相关的错误 - 以更快地找到性能问题的根本原因。
如果您在 Javascript 项目中使用 Sentry Performance,您还可以连接追踪,以获得完整的可见性。您可以通过以下方法执行此操作:
- 对于在后端开始的请求,通过 在 HTML 模板中添加一个元标签,该标签包含追踪信息。
- 对于从 JavaScript 开始的请求,通过 SDK 在对后端的请求中设置一个标头。
代码级洞察的性能分析
Sentry 的最新功能 性能分析 提供了生产环境中性能瓶颈的代码级洞察,让您能够加速故障排除并优化资源消耗。它现已可供 PHP、Python、Node、Android 和 iOS 用户使用。
性能分析允许您
- 深入分析导致延迟问题的精确函数和代码行,无需编写性能测试或搜索跨度。
- 使用火焰图识别热代码路径,以便在用户感受到慢速请求的影响之前优化资源消耗。
- 在任何环境中测试您的应用程序性能,包括生产环境,并且开销最小。
- 通过对代码执行的洞察来填补缺失的检测空白 - 无需手动添加跨度。
通过性能监控改善您的 Laravel 应用程序
Sentry 是一个强大的工具,可以帮助您通过快速识别问题来改进 Laravel 应用程序。通过遵循本文中概述的步骤并探索 Sentry 的一些功能,您可以确保您的 Laravel 应用程序以最佳性能运行,并为您的用户提供从头到尾的出色体验。