diff --git a/awx/main/analytics/subsystem_metrics.py b/awx/main/analytics/subsystem_metrics.py index d52e986c63..b404fef6c7 100644 --- a/awx/main/analytics/subsystem_metrics.py +++ b/awx/main/analytics/subsystem_metrics.py @@ -195,6 +195,7 @@ class Metrics: SetIntM('task_manager_running_processed', 'Number of running tasks processed'), SetIntM('task_manager_pending_processed', 'Number of pending tasks processed'), SetIntM('task_manager_tasks_blocked', 'Number of tasks blocked from running'), + SetFloatM('task_manager_commit_seconds', 'Time spent in db transaction, including on_commit calls'), SetFloatM('dependency_manager_get_tasks_seconds', 'Time spent loading pending tasks from db'), SetFloatM('dependency_manager_generate_dependencies_seconds', 'Time spent generating dependencies for pending tasks'), SetFloatM('dependency_manager__schedule_seconds', 'Time spent in running the entire _schedule'), diff --git a/awx/main/scheduler/task_manager.py b/awx/main/scheduler/task_manager.py index b219aaf3b0..157cbb1610 100644 --- a/awx/main/scheduler/task_manager.py +++ b/awx/main/scheduler/task_manager.py @@ -130,8 +130,12 @@ class TaskBase: # if sigterm due to timeout, still record metrics signal.signal(signal.SIGTERM, self.record_aggregate_metrics_and_exit) self._schedule() - self.record_aggregate_metrics() - logger.debug(f"Finishing {self.prefix} Scheduler") + commit_start = time.time() + + if self.prefix == "task_manager": + self.subsystem_metrics.set(f"{self.prefix}_commit_seconds", time.time() - commit_start) + self.record_aggregate_metrics() + logger.debug(f"Finishing {self.prefix} Scheduler") class WorkflowManager(TaskBase):