Help us learn about your current experience with the documentation. Take the survey.
GitLab 开发者服务测量指南
您可以启用服务测量来调试任何慢速服务的执行时间、SQL 调用次数、垃圾回收统计信息、内存使用情况等。
测量模块
测量模块是一个工具,可以测量服务的执行情况并记录:
- 服务类名称
- 执行时间
- SQL 调用次数
- 详细的
gc统计信息和差异 - RSS 内存使用量
- 服务器工作线程 ID
测量模块将这些测量结果记录到一个名为 service_measurement.log 的结构化日志中,每次服务执行都作为一条单独的条目。
对于 GitLab.com,service_measurement.log 作为我们监控解决方案的一部分被摄取到 Elasticsearch 和 Kibana 中。
如何使用
测量模块允许您通过在任何服务类的文件最后一行添加 Measurable,轻松测量和记录任何服务的执行情况。
例如,要在 DummyService 类中添加一个模块,您可以使用以下方法:
class DummyService
def execute
# ...
end
end
DummyService.prepend(Measurable)当您添加带有 EE 功能的 EE 命名空间中的模块时,需要在添加 EE 模块之后再添加 Measurable。
这样,Measurable 位于继承链的底部,以便同时测量 EE 功能的执行情况:
class DummyService
def execute
# ...
end
end
DummyService.prepend_mod_with('DummyService')
DummyService.prepend(Measurable)记录额外属性
如果您需要记录一些额外的属性,可以在服务类中定义 extra_attributes_for_measurement:
def extra_attributes_for_measurement
{
project_path: @project.full_path,
user: current_user.name
}
end测量模块注入服务后,它会被一个通用功能标志控制。 要实际使用它,您需要通过启用功能标志来为所需的服务启用测量。
使用功能标志启用测量
在下面的示例中,使用 :gitlab_service_measuring_projects_import_service
功能标志 来为 Projects::ImportService 启用测量功能。
通过 ChatOps:
/chatops run feature set gitlab_service_measuring_projects_import_service true