
记录慢查询是 性能调优的重要部分。Rails 提供了一种用于记录慢查询的内置机制,称为 Active Support Notifications。
本文将向你展示如何使用 Active Support Notifications 记录 Rails 应用程序中的慢查询。我们还将提供如何分析缓慢查询日志以识别和修复性能问题的技巧。
慢查询是指执行时间超过一定阈值的查询。构成慢速查询的阈值可能因应用程序及其性能要求而异。不过,一个好的经验法则是,将任何耗时超过 100 毫秒的查询视为慢查询。
记录缓慢查询的重要性和原因有很多。
首先,慢查询可能是应用程序中潜在性能问题的信号。通过记录缓慢查询,您可以及早发现这些问题并采取措施加以解决。预防胜于治疗。
其次,缓慢查询可以帮助您识别应用程序中潜在的安全漏洞。例如,导致的慢查询可用于识别漏洞并采取措施加以缓解。
第三,慢查询可以帮助您提高应用程序的性能。
通过分析慢查询日志,您可以找出造成性能问题最多的查询,并采取措施对其进行优化。我们可以使用 Active Support Notifications 在应用程序中记录慢查询事件。
对于希望深入了解应用程序性能和行为的 来说,主动支持通知是必不可少的工具。通过它们,您可以跟踪代码中发生的特定事件,并收集有关其执行情况的宝贵数据。
通过了解它们的功能并有效利用它们,您可以显著提高 Rails 应用程序的性能、可维护性和整体健康水平。
以下是主动支持通知及其主要优势的概述。
是一种内置的 Rails 机制,用于记录应用程序中发生的事件。要使用 “主动支持通知” 记录缓慢查询,可将下面的示例代码放在初始化器中(如 config/initializers/error_notifications.rb ),以确保其在应用程序启动时运行。或者,将代码添加到特定控制器或模型中,以便有针对性地记录日志。
config.active_support.Notifications.subscribe('sql.active_record') do |*args|
event = ActiveSupport::Notifications::Event.new(*args)
if event.duration > 100
Rails.logger.info "Slow query: #{event.payload[:sql]}"
end
end
这段代码将记录所有执行时间超过 100 毫秒的 SQL 查询。
记录的信息包括 SQL 语句、查询持续时间、执行查询的文件名和行号。
开始记录慢查询后,就可以分析日志,找出造成性能问题最多的查询。分析慢查询日志有几种不同的 *** 。
一种 *** 是使用 之类的工具。Rails 性能仪表板提供了一个图形界面,用于查看和分析慢查询日志。
另一种分析慢查询日志的 *** 是使用文本编辑器或电子表格程序。您可以使用文本编辑器或电子表格程序按持续时间、SQL 语句或文件名对慢速查询日志进行排序和过滤。
这可以帮助你找出造成最多性能问题的查询。
一旦确定了造成最多性能问题的查询,就可以采取措施进行修复。有几种不同的 *** 可以解决查询速度慢的问题。
一种 *** 是优化 SQL 语句。可以通过使用索引、添加约束或使用更高效的查询 *** 来优化 SQL 语句。
另一种修复缓慢查询的 *** 是缓存查询结果。可以使用 或(如 )来缓存查询结果。
实施分页并将大型结果集拆分成较小的页面,可以提高性能并减少内存使用量。
此外,还可考虑运行后台工作,并将长期运行的查询卸载到后台工作(如使用 Sidekiq、Resque),以防止阻塞 *** 请求。
主动支持通知(Active Support Notifications)是记录缓慢查询的内置 Rails 机制。记录慢查询是调整任何 Rails 应用程序性能的重要部分。通过记录查询,您可以及早发现性能问题并采取措施加以解决。
您可以使用 Active Support Notifications 记录慢速查询,并分析日志以确定导致最多性能问题的查询。一旦确定了造成最多性能问题的查询,就可以采取措施进行修复。
如果您正在执行一个成熟的项目,并且有能力让初级开发人员加入团队,那么这种程度的工作优化将引导他们通过参与流程建立更好的实践。并让监控团队和前辈们参与进来,从而建立一个性能更好的平台。将缓慢查询项目交给初级开发人员,他们将从中受益匪浅。
不要坐等问题出现。在缓慢查询拖慢您的速度之前,先加以预防。要积极主动,而不是被动反应!
谁在尝试访问某些网站时没有遇到过更新Java的请求? 虽然许多人通过交互式网站功能熟悉Java,但用户可能不太熟悉JavaScript——或者,实际上,他们可能错误地认为两者是相同的。 在本文中,我们将讨论JavaScript 是什么以及Java和JavaScript之间的区别。然后我们将概...
使用宝塔面板,您可以快速地创建一个FTP管理账户,对网站文件进行管理。但有必要提醒大家的是,使用FTP远不如使用SFTP安全,你可以查看文章“”进一步了解两者之间的差异。 此外,宝塔面板的文件管理模块其实已经能够满足站长的大部分文件管理需求。当然,如果你非得要使用FTP管理服务器文件,可以参照以下...
宝塔的数据库管理,是基于phpmyadmin管理和新建数据库。其最大的便利性就是类似,通过面板可以快速访问进行管理操作,无需单独访问phpmyadmin的主页。 此外,在宝塔面板进行数据库管理,你也对数据库名、用户名及密码等信息一目了然,及可以对数据库执行快速备份或者导入。 添加数据...
宝塔面板另外一个特质是,你无需通过Linux命令行来查看服务器各项指标状况,即可以阿里云服务器类似的可视化图表,查看资源使用、负载、CPU占用及内容使用百分比等指标。 默认监控是关闭,有需要的,可以开启,监控数据默认保存30天,可以自行修改,默认监控数据保存在日志,可手动清理该日志。 监控管理,...
宝塔面板的安全管理可以设置SSH开关、禁用PING、放行端口、屏蔽IP等相关的操作。 SSH的设置 SSH的关闭与启动,点击下图的开关,即可开启或关闭SSH远程连接。 SSH端口的修改,SSH远程连接的默认端口为22,修改端口前,请先查看该端口是否被占用。 PING命令的...
宝塔面板设置主要涉及的是宝塔控制后台自身的参数,包括诸如面板的开关、自动更新及SSL、面板端口设置等。虽然这部分不涉及服务器自身的管理,但对宝塔面板的设置也有其重要。 特别是面板端口、安全入口及面板密码等涉及安全的参数设置。 启动和关闭面板 如果你长时间无需使用到宝塔面板,可以考虑...